c# - 在 where 子句中组合两个 LINQ 条件

标签 c# .net linq c#-4.0

我有一个像下面这样查询的集合。

this.Collection.AsQueryable().Where(x => x.FirstName = "FirstName" && x => x.LastName= "LastName");

现在基于一个 bool 值,我想在 where 子句中添加另一个 && 条件。

我该怎么做?我尝试了以下。

var firstExpr = x => x.FirstName = "FirstName" && x => x.LastName= "LastName";
var newExpr = firstExpr;
if (includeAge)
{
 Expression<Func<T, bool>> ageExpr = x => x.Age == 21;
 var combined = Expression.AndAlso(ageExpr.Body, firstExpr.Body);
 var newExpr = Expression.Lambda<Func<T, bool>>(combined);
}

this.this.Collection.AsQueryable().Where(newExpr);

但我得到一个异常 - System.ArgumentException:为 lambda 声明提供的参数数量不正确

最佳答案

如果这是内存中收集,则没有理由转换为可查询:

IEnumerable<YourType> query = this.Collection.Where(x => x.FirstName = "FirstName" && x => x.LastName= "LastName");

if (includeAge)
    query = query.Where(x => x.Age == 21);

关于c# - 在 where 子句中组合两个 LINQ 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077903/

相关文章:

c# - ASP.NET 中用户 IP 地址的防弹检测

c# - 更改 Xml 声明,或选择没有声明部分的 xml

c# - 如何为每个 MySQL 获取的变量创建一个包含内容的面板

c# - 如何从 .net 应用程序针对 sqlserver 运行 sql 并像使用 SQL Management Studio 一样获得输出?

c# - 在 LINQ 中忽略参数的正确方法是什么?

c# - 如何比较linq中2个列表中子项的属性

c# - 异步等待 Task.Run 与 HttpClient.GetAsync

c# - 如何使用 C# 执行 MySQL 表的校验和?

c# - 虚拟键盘(类似 Swype 的键盘)Windows 窗体应用程序 C#

c# - 有没有办法使用 .net 驱动程序忽略 cassandra 数据库中实体的列