我有一个像下面这样查询的集合。
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/