【发布时间】:2016-10-17 04:05:26
【问题描述】:
我有一个包含多个字段(公司名称、邮政编码等)的表单,它允许用户在数据库中搜索公司。如果用户在多个字段中输入值,那么我需要搜索所有这些字段。我正在使用 LINQ 查询数据库。
到目前为止,我已经设法编写了一个函数,该函数将查看他们的输入并将其转换为表达式列表。我现在想将该 List 转换为一个表达式,然后我可以通过 LINQ 提供程序执行该表达式。
我最初的尝试如下
private Expression<Func<Company, bool>> Combine(IList<Expression<Func<Company, bool>>> expressions)
{
if (expressions.Count == 0)
{
return null;
}
if (expressions.Count == 1)
{
return expressions[0];
}
Expression<Func<Company, bool>> combined = expressions[0];
expressions.Skip(1).ToList().ForEach(expr => combined = Expression.And(combined, expr));
return combined;
}
但是,这会失败,并出现一条异常消息,类似于“二元运算符 And 未定义为...”。有没有人知道我需要做什么来组合这些表达式?
编辑:更正了我忘记将表达式的结果分配给变量的行。感谢您指出这一点。
【问题讨论】:
-
如果您只需要逻辑“和”,最好使用 AndAlso 以避免不必要的评估。
标签: linq