Tôi đang gặp phải một số điểm khác biệt với LINQ to SQL.Các đặc tính LINQ to SQL
Với một truy vấn tương đối đơn giản, tôi muốn chọn một số lĩnh vực, nhưng có trường ngày định dạng như dây đàn, mà tôi lần đầu tiên đạt được như thế này:
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() : ""
};
Sau đó tôi đã cố gắng truy vấn sau, đó là giống hệt nhau, ngoại trừ tôi truy vấn trực tiếp từ DataContext của tôi, chứ không phải là một yếu tố trong truy vấn đầu tiên của tôi:
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() : ""
};
người đầu tiên chạy tốt, nhưng các truy vấn thứ hai mang lại một:
Không thể dịch biểu thức '...' thành SQL và không thể xử lý biểu thức dưới dạng biểu thức cục bộ.
Nếu tôi xóa các dòng Định dạng ngày, nó hoạt động tốt. Nếu tôi loại bỏ .HasValue kiểm tra xem nó cũng hoạt động tốt, cho đến khi có giá trị null.
Bất kỳ ý tưởng nào?
Anthony
Có vẻ bạn có hai câu hỏi hoàn toàn khác nhau. Một là chọn từ MyItems trong một đối tượng MyList. Thứ hai là chọn từ các đối tượng MyList (không phải MyItems). Các kiểu dữ liệu có giống nhau không? Nó là khá khó khăn để gỡ lỗi này mà không biết những gì các cấu trúc bảng được. – Bryant