问题描述
我想在使用linq查询(.net核心)给出的日期内选择数据。
实体是
public List<Slots> Dates { get; set; }
和
public class Slots
{
public string SlotName { get; set; }
public DateTime SlotDate { get; set; }
}
这是场景。我想从Dates
中选择日期内的所有数据,但需要将日期与SlotDate
匹配。
我尝试过
IEnumerable<Programs> programs = await _programRepository.GetAllAsync(p => p.Dates.Select(d => d.SlotDate >= startDate && d.SlotDate<=endDate));
解决方法
Linq可以很好地处理DateTime,您可以使用标准的大于/小于运算符。非常基本的示例:
using System;
using System.Collections.Generic;
using System.Linq;
public class Slots
{
public string SlotName { get; set; }
public DateTime SlotDate { get; set; }
}
public class Program
{
public static void Main()
{
List<Slots> Dates = new List<Slots>();
Dates.Add(new Slots()
{
SlotName = "Test1",SlotDate = DateTime.Now
});
Dates.Add(new Slots()
{
SlotName = "Test2",SlotDate = DateTime.Now.AddSeconds(5)
});
var selection = Dates.Where(s => s.SlotDate > DateTime.Now).Single();
Console.WriteLine(selection.SlotName);
}
}
Try it out here。显然,您不会使用DateTime.Now,但是只需要简单的“ Where”行。如果要查找两个日期之间的值,只需添加一个&&
和另一个条件即可。
这只是从选择中获得.Single()
值。如果要查找多个值,请使用.ToList()
-返回的值将是一个可以像其他任何列表一样处理的列表。