Tôi bắt đầu với this question, mà tôi sắp xếp trả lời there, và bây giờ tôi hỏi câu hỏi cơ bản hơn ở đây. Tôi đã đơn giản hóa các truy vấn xuống này:LINQ "Không thể dịch biểu thức ... thành SQL và không thể xử lý nó dưới dạng biểu thức cục bộ."
var q = from ent in LinqUtils.GetTable<Entity>()
from tel in ent.Telephones.DefaultIfEmpty()
select new {
Name = ent.FormattedName,
Tel = tel != null ? tel.FormattedNumber : "" // this is what causes the error
};
tel.FormattedNumber
là một tài sản kết hợp các lĩnh vực Number
và Extension
thành một chuỗi định dạng gọn gàng. Và đây là những lỗi mà kết quả:
System.InvalidOperationException: Could not translate expression 'Table(Entity).SelectMany(ent => ent.Telephones.DefaultIfEmpty(), (ent, tel) => new <>f__AnonymousType0`2(Name = ent.FormattedName, Tel = IIF((tel != null), tel.FormattedNumber, "")))' into SQL and could not treat it as a local expression.
Nếu tôi thay đổi tài liệu tham khảo trên từ FormattedNumber
để chỉ đơn giản Number
, mọi thứ đều hoạt động tốt.
Nhưng tôi muốn số được định dạng hiển thị độc đáo trong danh sách của mình. Bạn đề nghị cách nào gọn gàng nhất, sạch sẽ nhất?