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