Lambdas 可以作為 Func 和 Expression 發出
假設以下 Person
類:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
以下 lambda:
p => p.Age > 18
可以作為引數傳遞給兩個方法:
public void AsFunc(Func<Person, bool> func)
public void AsExpression(Expression<Func<Person, bool>> expr)
因為編譯器能夠將 lambdas 轉換為委託和 Expression
s。
顯然,LINQ 提供商嚴重依賴 Expression
s(主要通過 IQueryable<T>
介面公開),以便能夠解析查詢並將其轉換為儲存查詢。