Я сталкиваюсь с некоторыми особенностями 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, она также будет работать нормально, пока не появятся нулевые значения.
Есть идеи?
Anthony