C# LINQ WHERE语句/忽略条件

C# LINQ WHERE语句/忽略条件,c#,linq,where,ignore,conditional-statements,C#,Linq,Where,Ignore,Conditional Statements,若参数为null或空,我需要忽略WHERE语句中的一些或所有条件 F.E: 我有一个简单的LINQ查询 var query = from x in context.a where x.p == param1 && x.i == param2 select x; 如果param1为null或emty,如何忽略x.p==param1 编辑 试过这个 var query = from myLog in myContext.ApsVali

若参数为null或空,我需要忽略WHERE语句中的一些或所有条件 F.E:

我有一个简单的LINQ查询

var query = from x in context.a
            where x.p == param1 && x.i == param2
            select x;
如果param1为null或emty,如何忽略
x.p==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.

如果第二个组合框的项为空。有什么问题吗?

您可以将其添加为条件:

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

如果
param1
为null或空,则该条件将始终为true,这将有效地“忽略”where条件。

您可以单独检查
param1
param2
这一项

var query = from x in context.a
             where (X.p==param1 || string.IsNullOrEmpty(param1))
             && (X.i==param2 || string.IsNullOrEmpty(param2))
             select x;
如果您想单独检查

可能的副本,上述两个条件也可以正常工作