using (var mySysDB = new SysDB<SysLog>(SysDB<SysLog>.GetConn))
{
DateTime? queryDate = new DateTime(2015, 8, 24);
var bb = mySysDB.SysLog.Where(p => EntityFunctions.DiffDays(p.Date,queryDate) == 0);
var ss = mySysDB.SysLog.Where(p => EntityFunctions.TruncateTime(p.Date) == queryDate);
var aa = from A in mySysDB.SysLog
where EntityFunctions.TruncateTime(A.Date) == queryDate
select A;
int totalRows = bb.Count();
}
说明:Date是日期型字段,查询的时候前端会传一个日期值到后台进行查询某一天的数据,但是运行到int totalRows = bb.Count();获取数据行数赋值的时候就报错:
"LINQ to Entities 不识别方法“System.Nullable`1[System.DateTime] TruncateTime(System.Nullable`1[System.DateTime])”,因此该方法无法转换为存储表达式。"
折腾了一天了,DiffDays,TruncateTime这几个函数都不行,在网上也找了很多资料和我的代码也一样
------解决思路----------------------
把第一句的 DateTime? queryDate = new DateTime(2015, 8, 24); 换成 DateTime queryDate = new DateTime(2015, 8, 24); 试试
------解决思路----------------------
错误信息很明显了,LINQ不识别可空类型
------解决思路----------------------
System.DateTime?不就是System.Nullable`1[System.DateTime]的简写形式吗,语法糖而已
------解决思路----------------------
var aa = from A in mySysDB.SysLog
where A.Date.hasValue && EntityFunctions.TruncateTime(A.Date.value) == queryDate.value
select A;
------解决思路----------------------
EntityFunctions.TruncateTime(p.Date)
p.Data是可空类型,用TruncateTime函数无法转换
------解决思路----------------------
TruncateTime(A.Date)
这里还有A.Date呢
你确定改了之后,错误信息什么变化都没有,行号什么的都没变?
------解决思路----------------------
老兄,LIinq 不支持这种搞法的,