如何在linq lambda表达式中使用ToShortDateString?
我需要在一个linq查询中使用lambda表达式调用ToShortDateString:
toRet.Notification = Repositories .portalDb.portal_notifications.OrderByDescending(p => p.id) .FirstOrDefault(p => p.date.ToShortDateString() == shortDateString);
但我得到错误:
System.Data.Entity.dll中出现“System.NotSupportedException”类型的exception,但未在用户代码中处理
附加信息:LINQ to Entities无法识别方法’System.String ToShortDateString()’方法,并且此方法无法转换为存储表达式。
考虑到我确实需要使用ToShortDateString()
,我该怎么办?
谢谢。
当您使用的是日期/时间数据时,不应该强制进行字符串比较 – 只要强制进行字符串比较,就会突然不得不处理字符串的格式化。
相反,有类似的东西:
var endDate = targetDate.AddDays(1); toRet.Notification = Repositories .portalDb.portal_notifications.OrderByDescending(p => p.id) .FirstOrDefault(p => p.date >= targetDate && p.date < endDate);
(假设targetDate
是您用于在代码中生成shortDateString
任何DateTime
变量,并且已经是没有时间值的DateTime
)
Linq to Entities无法将ToSortDateString
方法转换为SQL代码。 你不能在服务器端调用它。 将过滤移动到客户端(将所有数据从服务器传输到客户端),或者考虑使用服务器端函数来获取日期部分日期(您应该传递DateTime
对象而不是shortDateString
):
EntityFunctions.TruncateTime(p.date) == dateWithoutTime
试试这个,
您也可以使用以下代码。
Activity = String.Format("{0} {1}", String.Format("{0:dd-MMM-yyyy}", s.SLIDESHEETDATE), String.Format("{0:HH:mm}", s.ENDDATETIME))
ToShortDateString()
方法通常只用于处理日期和忽略时间戳。
您将通过使用以下查询获得今天的结果集。
Repositories.portalDb.portal_notifications.OrderByDescending(p => p.id) .FirstOrDefault(p => p.date.Date == DateTime.Now.Date);
通过使用DateTime
结构的Date
属性,您只能获取该日期的记录。
注意:Linq to Objects。 只有在您(或有选项)绕过ToShortDateString()
方法时才有效
上述就是C#学习教程:如何在linq lambda表达式中使用ToShortDateString?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1004112.html