gpt4 book ai didi

linq - 如何将LINQ表达式组合为一个?

转载 作者:行者123 更新时间:2023-12-03 12:09:07 25 4
gpt4 key购买 nike

我有一个带有多个字段(公司名称,邮政编码等)的表单,该表单允许用户在数据库中搜索公司。如果用户在多个字段中输入值,那么我需要搜索所有这些字段。我正在使用LINQ查询数据库。

到目前为止,我已经设法编写了一个函数,该函数将查看他们的输入并将其转换为表达式列表。现在,我想将该列表转换为一个表达式,然后可以通过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并没有为...定义”的异常消息。有人对结合这些表达方式有什么想法吗?

编辑:更正了我忘记分配和将表达式一起分配给变量的结果的行。感谢您指出这一点。

最佳答案

编辑:就表达式树而言,Jason的答案现在比我的答案更完整,所以我删除了这一点。但是,我想离开这个:

我假设您正在将这些用于Where子句...为什么不随每个表达式依次调用Where?那应该具有相同的效果:

var query = ...;
foreach (var condition in conditions)
{
query = query.Where(condition);
}

关于linq - 如何将LINQ表达式组合为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1922497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com