Tôi đã thấy rằng có thể thêm các phương thức được biên dịch cùng nhau.Mục đích của việc thêm các phương thức Func đã biên dịch cùng nhau là gì?
Expression<Func<Customer, bool>> ln = c => c.lastname.Equals(_customer.lastName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fn = c => c.firstname.Equals(_customer.firstName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fdob = c => c.DOB.ToString("yyyyMMdd").Equals(_customer.DOB.ToString("yyyyMMdd"));
var filter = ln.Compile() + fn.Compile() + fdob.Compile();
Bạn có hiểu không?
tôi sẽ có ý định sử dụng bộ lọc ở vị trí của một biểu thức lambda để lọc một kho lưu trữ của khách hàng:
IEnumerable<Customer> customersFound = _repo.Customers.Where(filter);
Tùy thuộc vào logic kinh doanh, tôi có thể có hoặc không thêm ba phương pháp biên soạn với nhau, nhưng chọn và chọn, và có thể thêm nhiều phương thức được biên dịch khi tôi đi.
Bất cứ ai có thể giải thích nếu thêm chúng lại với nhau sẽ xây dựng chuỗi truy vấn hay không? Bất cứ ai cũng có một gợi ý tốt hơn?
Tôi có thể chuỗi các câu lệnh "Where" và sử dụng các biểu thức lambda thông thường, nhưng tôi bị hấp dẫn bởi những gì bạn có thể thu được từ việc biên dịch các phương thức và thêm chúng lên!
Cảm ơn Gert, rất hữu ích. Tôi nghĩ rằng tôi sẽ cài đặt LinqKit vào dự án của tôi và cung cấp cho nó một đi. Đó là một sự xấu hổ thêm các đại biểu với nhau không xây dựng một bộ lọc như tôi đã hy vọng, nhưng LinqKit trông giống như một giải pháp tốt, và nó trông khá sạch sẽ cú pháp. Dự án của tôi đang sử dụng EF5 và SQL2012 trong trường hợp ai đó đang tự hỏi. –
Lasse và Nicholas giải thích về việc thêm các đại biểu multicast cùng nhau, nhưng giải pháp đề xuất của Gert trả lời tốt nhất: "Bất cứ ai cũng có một đề xuất tốt hơn?". Tôi đã thực hiện một giải pháp bằng cách sử dụng LinqKit như được đề xuất. Cảm ơn nhiều) –