我有这样的查询:
var q = db.GetTable<Person>().Where(x => x.Employer.CEO != null);
这个组成的查询将返回给定人员工作的公司CEO的ID。这可以查找和花花公子,但如果我这样做,它将无法转换为SQL错误:
public class Person
{
public bool HasCEO
{
get
{
return this.Employer.CEO != null;
}
}
}
我希望能够执行此操作并将较长的表达式包装在属性中,以便我不必重复嵌套表get:
var q = db.GetTable<Person>().Where(x => x.HasCEO);
如何创建LINQ属性以实现我想要的结果?
如果重要的话,我正在使用C#4.0。
答案 0 :(得分:2)
你做不到。 LINQ to SQL通过检查查询的expression tree来工作,并且没有深入研究属性的实现以确定行是否符合您的条件。
您可以做的是在SQL Server中创建一个动态计算此属性的视图,并查询该属性而不是表。