2014-12-31 4 views
0

ошибка: LINQ к Entities не распознает метод 'System.DateTime ConvertShamsiToMiladi (System.String)' метод, и этот метод не может быть переведен в выражение магазинаLINQ к 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

'd.Date' делает не возвращать 'DateTime'? Потому что 'ConvertShamsiToMiladi' является методом расширения типа' string', а не 'DateTime'. –

ответ

1

У вас есть это сообщение, потому что Linq doesent знают, как перевести ваш метод SQL следует преобразовать это Linq объекта первого использования .AsEnumerable() он должен выглядеть следующим образом:

var _48hoursAgoPayments =_paymentService.AsEnumerable().GetMany(d => d.Date.ConvertShamsiToMiladi() >= _48hoursAgoDate) 

с уважением,

0

Использование LINQ для лиц ваш запрос преобразуется в SQL и ConvertShamsiToMiladi не реализованы в SQL. Вы либо выбираете с правильным заявлением, либо конвертируете дату позже, либо делаете весь выбор на стороне клиента, то есть с _paymentService.AsEnumerable().GetMany(...).

«LINQ для лиц, не распознает ...» обсуждалось много раз здесь:
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

Смежные вопросы