LINQ to Entities 不识别方法

.Net技术 码拜 10年前 (2015-03-13) 2195次浏览 0个评论

 if (JKRQ.Length > 0)
            {
                list = list.Where(m => string.Format (“yyyy-MM-dd”,m.JKRQ )==JKRQ );
            }
数据库中的datetime是精确到毫秒的,这样子会报错:
LINQ to Entities 不识别方法“System.String ToString(System.String)”,因此该方法无法转换为存储表达式。
怎么才能让等式成立?

 
LINQ to Entities 不识别方法
把JKRQ转成DateTime,然后直接比较DateTime
LINQ to Entities 不识别方法
string.Format (“{0:yyyy-MM-dd}”,m.JKRQ )
LINQ to Entities 不识别方法
引用 2 楼 duanzi_peng 的回复:

string.Format (“{0:yyyy-MM-dd}”,m.JKRQ )

+1
string.Format (“yyyy-MM-dd”,m.JKRQ )格式化之后就变成”yyyy-MM-dd”这东西了
或者你用m.JKRQ.ToString(“yyyy-MM-dd”)

LINQ to Entities 不识别方法
 string.Format (“yyyy-MM-dd”,m.JKRQ )
格式错了,string.Format(“{yyyy-MM-dd}”,m.JKRQ)。上网搜一下,看看Format时间转换的用法。
LINQ to Entities 不识别方法
10分
 if (JKRQ.Length > 0)
            {
                list = list.AsEnumberable().Where(m => string.Format (“yyyy-MM-dd”,m.JKRQ )==JKRQ );
            }
LINQ to Entities 不识别方法
另一种方式是用:EntityFunctions.DiffMicroseconds 
a href=”http://msdn.microsoft.com/en-us/library/dd412631%28v=vs.110%29.aspx” target=”_blank”>http://msdn.microsoft.com/en-us/library/dd412631%28v=vs.110%29.aspx
LINQ to Entities 不识别方法
40分
EF6.0以下用
var dt = DateTime.Parse(JKRQ);
list.Where(m => System.Data.Objects.SqlClient.SqlFunctions(m.JKRQ) == dt)
EF6以上用
引用System.Data.Entity然后使用里面的DbFunctions.TruncateTime(m.JKRQ)
LINQ to Entities 不识别方法
EF6.0以下用
var dt = DateTime.Parse(JKRQ);
list.Where(m => System.Data.Objects.SqlClient.SqlFunctions.GetDate(m.JKRQ) == dt)
EF6以上用
引用System.Data.Entity然后使用里面的DbFunctions.TruncateTime(m.JKRQ)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明LINQ to Entities 不识别方法
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!