У меня довольно сложный запрос, который я хотел бы получить, чтобы вернуть некоторые конкретные типы. В основном в отношении вычислений даты / времени или строковых значений, Entity Framework, похоже, плюет на пустышку, когда я пытаюсь сделать что-то большее, чем тип System.DateTime:
Указанный тип члена «Дата»
не поддерживается в LINQ to Entities.
Только инициализаторы, члены сущности и
свойства навигации объекта
поддерживается.
Запрос:
// Here comes the aggregate query.
object summary = from te in ctx.TimeEntries
where te.StartTime >= startofweek
&& te.UserName == User.Identity.Name
group te by te.StartTime.Day into Groups
select new
{
Key = Groups.Key,
Count = Groups.Count(),
//Total = Groups.Sum(n => (double)((n.EndTime ?? DateTime.Now) - n.StartTime).TotalMinutes / 60),
Tasks = from t in Groups
orderby t.StartTime descending
select new
{
Name = t.Task.TaskName,
Project = t.Task.Batch.Project.ProjectName,
Batch = t.Task.Batch.BatchName,
//Minutes = ((t.EndTime ?? DateTime.Now) - t.StartTime).Minutes,
Start = t.StartTime.Date,
Stop = t.EndTime,
Description = t.Notes,
Breaks = t.BreakFor ?? 0
}
};
В приведенном выше запросе свойство «Пуск» завершится ошибкой с вышеупомянутой ошибкой. Однако, если у меня просто будет «Start = t.StartTime», все будет хорошо. Аналогично, закомментированное значение для «Минут» также вызовет проблемы.
Предложения приветствуются!