Cách tốt nhất để thực hiện truy vấn có điều kiện bằng cách sử dụng LINQ cho đối tượng (không phải LINQ to sql).LINQ to objects Predicate Builder
Hiện tại tôi đang sử dụng công cụ xây dựng Predicate được tìm thấy tại đây http://www.albahari.com/nutshell/predicatebuilder.aspx và chuyển vị từ đã biên dịch sang IEnumerable.Where và có vẻ như hoạt động tốt.
Ví dụ mã của những gì tôi muốn giải quyết:
ví dụ như tôi có điều này
string keyword1 = "Test1";
string keyword2 = "Test3";
IEnumerable<TestObject> tests = new List<TestObject>()
{
new TestObject() {Name1 = "Test1", Name2 = "Test1"},
new TestObject() {Name1 = "Test2", Name2 = "Test2"},
new TestObject() {Name1 = "Test3", Name2 = "Test3"},
};
if (!String.IsNullOrEmpty(keyword1) && String.IsNullOrEmpty(keyword2))
tests = tests.Where(e => e.Name1.Contains(keyword1));
else if (!String.IsNullOrEmpty(keyword2) && !String.IsNullOrEmpty(keyword1))
tests = tests.Where(e => e.Name2.Contains(keyword2) || e.Name1.Contains(keyword1));
return tests.ToList();
Điều đó làm việc Cảm ơn Jon, có bất kỳ vấn đề hiệu suất nào có thể gây ra bằng cách xây dựng các truy vấn như thế này so với thực hiện thủ công với các câu lệnh if dài – kwiri