2013-12-05 5 views
2

У меня есть следующий метод в моем ASP.NET MVC веб-приложения: -Указанный тип член «Date» не поддерживается в LINQ для лиц

public SystemInformation GetSystemInfo(int pagesize)   
{ 
    var d = DateTime.Today; 
    SystemInformation s = new SystemInformation() 
    {        
     DeleteNo = tms.TechnologyAudits.Where(a => (EntityFunctions.TruncateTime(a.DateTimeEnd.Date) == EntityFunctions.TruncateTime(d) && a.AuditAction.Name.ToLower() == "delete")).Count(), 

    }; 
    return s; 
} 

Но выше поднимает следующее исключение: -

Указанный элемент «Дата» не поддерживается в LINQ до Объектов. Поддерживаются только инициализаторы, сущности и сущность навигации. .

+0

чек здесь ... http://stackoverflow.com/questions/4949892/using-datetime-in-dynamic-linq-to-entities – Nilesh

ответ

4

Это a.DateTimeEnd.Date, которые не могут быть переведены. Эквивалент - EntityFunctions.TruncateTime(a.DateTimeEnd). Вам не нужно/не использовать оба.

DateTime.Date:

Новый объект с той же датой, что и данный экземпляр, а значение времени набор до полуночи 12:00:00 (00:00:00)

EntityFunctions.TruncateTime :

Дата ввода с очищенной временной частью.

+0

спасибо большое, я понял проблему .. –

2

LINQ to Entities не может переводить большинство методов .NET Date (включая использование кастинга) в SQL, поскольку нет эквивалентного SQL.

В вашем случае LINQ не может перевести это

(EntityFunctions.TruncateTime(a.DateTimeEnd.Date) 

Решение является приведение объекта за пределами заявления LINQ, а затем передавать значение.

+0

, но как я могу это сделать в моем случае, как я я использую дату внутри где, поэтому я не могу отбросить объект ouside my where()? можете посоветовать? –

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