Как лучше всего выполнять условный запрос с использованием linq к объектам (не linq to sql).
В настоящее время я использую построитель предикатов, найденный здесь http: //www.albahari .com / nuthell / predicatebuilder.aspx и передача скомпилированного предиката в IEnumerable.Where, и он, кажется, работает нормально.
Пример кода того, что я хочу решить:
например, у меня есть этот
string keyword1 = "Test1";
string keyword2 = "Test3";
IEnumerable tests = new List()
{
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();