C# - 用于根据当前日期选择记录的Lambda表达式?

时间:2018-01-26 03:38:40

标签: c# lambda

我有一个名为Event的数据库表,其中有一个StartDate列,用于存储事件记录的日期。因此,我有Lambda Expression,我只想选择那些StartDate大于当前日期的记录?

public List<Event> GetAllEvents(int Id)
{
      DateTime currentDateTime = DateTime.Today;
      var events = _context.Event
            .Where(s => s.Id == Id)
             .Select(s => s.StartDate >= currentDateTime)
            .ToList();

     return events;
 }

我已尝试过上面的代码,但它给了我一个错误:

  

无法隐式转换类型&#39; System.Collections.Generic.List&#39;   到&#39; System.Collections.Generic.List&#39;

如何选择StartDate大于今天日期的所有记录?

谢谢

1 个答案:

答案 0 :(得分:5)

Select不适用于过滤。这是投影。 Where是您过滤数据的方式:

DateTime currentDateTime = DateTime.Today;
var events = _context.Event
      .Where(s => s.Id == Id && s.StartDate >= currentDateTime)
      .ToList();

但是,你确定你只想要一个给定Id的事件吗?我希望ID是唯一的,因此只有一个事件应与Id匹配。我认为你应该跳过那个条件。

DateTime currentDateTime = DateTime.Today;
var events = _context.Event
      .Where(s => s.StartDate >= currentDateTime)
      .ToList();

但我可能错了,因此您应该检查Id在您的域中的含义以及在StartDate选择事件后按Id过滤是否有意义。