我有一个名为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大于今天日期的所有记录?
谢谢
答案 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
过滤是否有意义。