Linq查询以.net核心在Date之内获取数据

问题描述

我想在使用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()-返回的值将是一个可以像其他任何列表一样处理的列表。