Я встречаюсь с некоторыми особенностями LINQ to SQL.
С относительно простым запросом я хочу выбрать некоторые поля, но поля даты будут отформатированы как строки, которые я впервые получил следующим образом:
var list = dataContext.MyLists.Single(x => x.ID == myId);
var items = from i in list.MyItems
select
new
{
i.ID,
i.Sector,
i.Description,
CompleteDate = i.CompleteDate.HasValue ? i.CompleteDate.Value.ToShortDateString() : "",
DueDate = i.DueDate.HasValue ? i.DueDate.Value.ToShortDateString() : ""
};
Позже я попробовал следующий запрос, который точно такой же, за исключением того, что я запрашиваю прямо из моего dataContext, а не элемент в моем первом запросе:
var items = from i in dataContext.MyLists
select
new
{
i.ID,
i.Sector,
i.Description,
CompleteDate = i.CompleteDate.HasValue ? i.CompleteDate.Value.ToShortDateString() : "",
DueDate = i.DueDate.HasValue ? i.DueDate.Value.ToShortDateString() : ""
};
Первый работает отлично, но второй запрос дает:
Невозможно перевести выражение "..." в SQL и не может рассматривать его как локальное выражение.
Если я удалю строки, которые форматируют дату, она отлично работает. Если я удалю проверку .HasValue, он также будет работать нормально, пока не будет нулевых значений.
Любые идеи?
Энтони