错误:LINQ to Entities无法识别该方法 'System.DateTime ConvertShamsiToMiladi(System.String)'方法,和 此方法无法转换为商店表达式
我该如何解决?
我的代码:
var _48hoursAgoDate = DateTime.Now.AddDays(-2);
var _48hoursAgoPayments =_paymentService.GetMany(d => d.Date.ConvertShamsiToMiladi() >= _48hoursAgoDate)
扩展方法:
public static DateTime ConvertShamsiToMiladi(this string source)
{
var date = source.Split('/');
return new DateTime(int.Parse(date[0]), int.Parse(date[1]), int.Parse(date[2]), new PersianCalendar());
}
答案 0 :(得分:1)
你有这条消息,因为Linq doesent知道如何将你的方法转换为SQL你应该首先使用.AsEnumerable()将它转换为Linq对象它应该如下所示:
var _48hoursAgoPayments =_paymentService.AsEnumerable().GetMany(d => d.Date.ConvertShamsiToMiladi() >= _48hoursAgoDate)
此致
答案 1 :(得分:0)
使用LINQ to Entities,您的查询将转换为SQL,ConvertShamsiToMiladi
未在SQL中实现。您可以选择适当的语句并在之后转换日期,也可以在客户端进行整个选择,即使用_paymentService.AsEnumerable().GetMany(...)
。
“LINQ to Entities无法识别......”在这里已多次讨论过:
LINQ to Entities does not recognize the method 'System.String ToBase64String(Byte[])' method,
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression