LINQ WHERE语句/忽略条件

7
如果参数为空,我需要忽略WHERE语句中的某些或所有条件。例如:
我有一个简单的LINQ查询:
var query = from x in context.a
            where x.p == param1 && x.i == param2
            select x;

如果param1为空或空字符串,我该如何忽略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.

如果第二个下拉框的选项为空,有什么问题吗?

可能是重复的问题:Linq:如果参数为空,则如何排除条件 - Ian Mercer
2个回答

10
你可以将它添加为一个条件:
 var query= from x in context.a 
            where String.IsNullOrEmpty(param1) || (x.p == param1 && x.i == param2)
            select x;
如果param1是null或空的话,条件将总是为真,这意味着"完全忽略"了where条件。

6

您可以单独检查param1param2这一个。

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

以上两个条件也可以单独检查,如果您想要单独检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接