LINQ WHERE утверждение / игнорировать условия - PullRequest
7 голосов
/ 17 сентября 2011

Мне нужно игнорировать некоторые или все условия в выражении WHERE, если параметр имеет значение null или пусто. FE:

У меня есть простой запрос LINQ

var query = from x in context.a
            where x.p == param1 && x.i == param2
            select x;

Как я могу игнорировать x.p == param1, еслиparam1 является нулем или пустым?

РЕДАКТИРОВАТЬ

Пробовал это

var query = from myLog in myContext.ApsValidationLogs
            where (myLog.systemtype == comboBoxSystemType.SelectedItem.ToString() || string.IsNullOrEmpty(comboBoxSystemType.SelectedItem.ToString()))
              && (myLog.bankid == comboBoxBankId.SelectedItem.ToString() || string.IsNullOrEmpty(comboBoxBankId.SelectedItem.ToString())))
            select myLog;

Но получил

Object reference not set to an instance of an object.

В случае, если второй элемент списка со списком равен нулю.Что не так?

Ответы [ 2 ]

9 голосов
/ 17 сентября 2011

Вы можете добавить его как условие:

 var query= from x in context.a 
            where String.IsNullOrEmpty(param1) || (x.p == param1 && x.i == param2)
            select x;

Если param1 равно нулю или пусто, условие всегда будет истинным, что фактически полностью "игнорирует" условия where.

5 голосов
/ 17 сентября 2011

Вы можете индивидуально проверить param1 и param2 этот ..

var query = from x in context.a
             where (X.p==param1 || string.IsNullOrEmpty(param1))
             && (X.i==param2 || string.IsNullOrEmpty(param2))
             select x;

вышеупомянутые два условия также хорошо работают, если вы хотите проверить индивидуально

...