LINQ WHERE statement/ignore conditions

筅森魡賤 提交于 2019-12-09 10:48:57

问题


I need to ignore some or all conditions in WHERE statement if parameter is null or empty F.E:

I have simple LINQ query

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

How can I ignore x.p == param1 if param1 is null or emty?

EDIT

Tried this

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;

But got

Object reference not set to an instance of an object.

In case if second combobox's item is null. What's wrong?


回答1:


You can add it as a condition:

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

If param1 is null or empty, the condition will always be true, which effectively "ignores" the where conditions entirely.




回答2:


you can individually check param1 and param2 this one..

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

the above two conditions also works well , if you want to check individually



来源:https://stackoverflow.com/questions/7456997/linq-where-statement-ignore-conditions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!