考虑以下Person
实体:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
使用以下Expression
(使用 构造PredicateBuilder
)作为标准:
var byName = PredicateBuilder.True<Person>().And(x => x.FirstName == "Chaim");
使用以下语法调用时,生成的 SQL 很好(包括WHERE
语句):
ctx.Set<Person>().AsExpandable().Where(x => byName.Invoke(x));
但是,当使用这种略有不同的语法调用时,不WHERE
涉及SQL,Enumerable.Where
而是通过以下方式完成过滤:
ctx.Set<Person>().AsExpandable().Where(byName.Invoke);
有什么想法吗?