[c#] «Дата» не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, сущности и свойства навигации сущности


Answers

Не самое лучшее решение, но оно работает. По ряду причин я должен использовать .net 3.5 на этом этапе, и изменить базу данных будет сложно. В любом случае, вот решение, которое работает:

            var query = from t in context.Logs
                      where t.Title == title 
                      && t.Timestamp.Day == LogDate.Day
                      && t.Timestamp.Month == LogDate.Month
                      && t.Timestamp.Year == LogDate.Year
                      select t;

Не самое изящное решение, но оно эффективно.

Question

Я пытаюсь выполнить следующий код, и я получаю сообщение об ошибке

public List<Log> GetLoggingData(DateTime LogDate, string title)
{
     var context = new LoggingEntities();
     var query = from t in context.Logs

           where t.Title == title 
           && t.Timestamp == LogDate

           select t;
     return query.ToList();
}

Ошибка, которую я получаю: «Указанный член типа« Дата »не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, сущности и свойства навигации сущности». Я пробовал различные попытки лить anythign в строку, сравнивая только дату, но, похоже, не может получить правильную комбинацию. Любая помощь приветствуется.




Всегда используйте EntityFunctions.TruncateTime () для x.DateTimeStart и LogDate. такие как :

var query = from t in context.Logs
              where t.Title == title 
              && EntityFunctions.TruncateTime(t.Timestamp) == EntityFunctions.TruncateTime(LogDate)
              select t;



Преобразуйте LongDate в .ToShortDateString а затем вы можете использовать его следующим образом:

EntityFunctions.TruncateTime(t.Timestamp) == LogDate

как Майк сделал




Вы можете использовать этот взлом:

DateTime startDate = LogDate.Date;
DateTime endDate = LogDate.Date.AddDays(1);

var query = from t in context.Logs
            where t.Title == title 
                  && t.Timestamp >= startDate 
                  && t.Timestamp < endDate
            select t;



Links