LINQ to Entities 不识别方法无法转换为存储表达式

.Net技术 码拜 7年前 (2015-02-12) 1220次浏览 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
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)

文章评论已关闭!