C# EF5和x2B;使用';比如';Lambda表达式中的运算符
在我的实体(销售)中,有一个类型为C# EF5和x2B;使用';比如';Lambda表达式中的运算符,c#,entity-framework,ef-code-first,lambda,C#,Entity Framework,Ef Code First,Lambda,在我的实体(销售)中,有一个类型为DateTime列Date 我使用以下lambda表达式从该表中获取最新的TrNo。但它总是给我Null。因为它还比较列的时间部分。实际上,我想比较一下列的日期部分 db.Sales.OrderByDescending(O => O.Date).Where(O => O.Date == DateTime.Now ).Select(O => O.TrNo).FirstOrDefault(); 请帮助我获得正确的代码构建。(我的数据库是MySQL
DateTime
列Date
我使用以下lambda表达式从该表中获取最新的TrNo
。但它总是给我Null
。因为它还比较列的时间
部分。实际上,我想比较一下列的日期部分
db.Sales.OrderByDescending(O => O.Date).Where(O => O.Date == DateTime.Now ).Select(O => O.TrNo).FirstOrDefault();
请帮助我获得正确的代码构建。(我的数据库是MySQL)
谢谢 如果O.Date
是一个日期,只需将其与DateTime.Now.Date
进行比较,因为DateTime.Now
将同时返回日期和时间。如果O.Date
实际上是一个DateTime
,只需执行相同的操作,O.Date.Date==DateTime.Now.Date
如果您只想测试DateTime的日期部分,请尝试此操作
db.Sales.OrderByDescending(O => O.Date).Where(O => O.Date == DateTime.Now.Date ).Select(O => O.TrNo).FirstOrDefault();
DateTime.Now.Date是时间为00:00.000的DateTime,因此您的查询将返回null。我不确定EF是否可以将此表达式转换为sql代码。谢谢,但它抛出,指定的类型成员“Date”在LINQ to Entities中不受支持。仅支持初始值设定项、实体成员和实体导航属性。
Yea。看起来你是对的。我建议OP看看这个。只需将DateTime值移动到单独的变量中,然后在LINQ查询中使用它