在进行日期比较的时候代码是这样写的:
//今日充值总金额
ViewBag.TodaySumAmount = sumAmount(m => true, p => p.Status == "ok" && p.CreateTime.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"));
结果出现:LINQ to Entities 不识别方法system.string错误
在网上查询说是在linq中不能使用C#的方法,因为linq是要解析为sql语句,C#的方法不识别,所以需要特别的方法
在网上查询需要引用System.Data.Entity
using System.Data.Objects.SqlClient; //在 System.Data.Entity.dll 中
然后在vs2013引用后这样写:
ViewBag.TodaySumAmount = sumAmount(m => true, p => p.Status == "ok" && SqlFunctions.DateDiff("dd", p.CreateTime, DateTime.Now) == 0);
然而却报这样得错:
LINQ to Entities 不识别方法“System.Nullable`1[System.Int32] DateDiff(System.String, System.Nullable`1[System.DateTime], System.String)”,因此该方法无法转换为存储表达式。
再用百度搜素却找不到合适的答案了。大多说的都不沾边,会是哪里的问题呢。
最后怀疑是不是 System.Data.Entity版本的问题。因为我在vs中引用程序集的时候 System.Data.Entity.dll只有一个版本,4.0
而我用的是vs2013,是4.5框架。entityframework也是6.0版
在msdn中搜素 System.Data.Entity,只有一个.netframework 4.0框架。并没有4.5框架。是不是意味着只支持4.0框架呢。
百度搜素,说只要项目引用了EntityFramework及EntityFramework.Sqlserver就可以在类中引用using System.Data.Entity.SqlServer;
这样也能调用SqlFunctions.DateDiff。
我项目中有这两个程序集引用。在类中添加using System.Data.Entity.SqlServer,编译运行,没有问题了。看来还真是这里的问题