《C#权威指南》中有一个名为 PredicateBuilder 的免费课程,它可以逐步构造LINQ谓词,并且可在 此处 获取。以下是将新表达式添加到谓词的方法摘录。请问有人能够解释一下吗?(我已经看到 这个问题,我不想要像那样的一般性答案。我正在寻找关于Expression.Invoke和Expression.Lambda如何构建新表达式的具体说明)。
public static Expression<Func<T, bool>> And<T> (this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast<Expression> ());
return Expression.Lambda<Func<T, bool>>
(Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters);
}
PredicateBuilder
的不是 "C# in Depth",而是 "C# in a Nutshell"。 - Jon Skeet