Jaki jest najlepszy sposób wykonania zapytania warunkowego przy użyciu linq do obiektów (nie linq do sql).Linq do obiektów Konstruktor predykatów
Obecnie używam konstruktora predykatów znalezionego tutaj http://www.albahari.com/nutshell/predicatebuilder.aspx i przekazywanie skompilowanego predykatu do IEnumerable.Where i wydaje się, że działa ładnie.
Przykład kodu co chcę rozwiązać:
np mam ten
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();
To działa Dziękuję Jon, czy są jakieś problemy z wydajnością, które mogą być spowodowane przez budowanie zapytań takich jak to, czy robi się to manualnie z długimi instrukcjami if – kwiri