Это работает, спасибо Джон, есть ли какие-либо проблемы с производительностью, которые могут быть вызваны построением таких запросов, по сравнению с выполнением вручную с помощью длинных операторов if?

наилучший способ сделать условный запрос, используя linq для объектов (не linq to sql).

В настоящее время я использую конструктор Predicate, найденный здесь.http://www.albahari.com/nutshell/predicatebuilder.aspx и передача скомпилированного предиката в IEnumerable.Where, и он, кажется, работает хорошо.

Пример кода того, что я хочу решить:

например, у меня есть это

 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();

Ответы на вопрос(1)

Ваш ответ на вопрос