LINQ在不属于属性时进行转换

时间:2012-02-12 05:45:26

标签: c# linq linq-to-sql

我有这样的查询:

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。

1 个答案:

答案 0 :(得分:2)

你做不到。 LINQ to SQL通过检查查询的expression tree来工作,并且没有深入研究属性的实现以确定行是否符合您的条件。

您可以做的是在SQL Server中创建一个动态计算此属性的视图,并查询该属性而不是表。