LINQ到EF交叉连接问题



我正在使用实体框架5。

下面是我成功运行的SQL查询:

Select person.pk 
from person, job
Where 
person.jobId= job.pk 
and 
job.Description = 'CEO'

我已经更改了上面查询中的表和列名。

现在,当我将上面的查询转换为下面的LINQ:

from person in Context.Person
from job in Context.Job
where
  person.jobId== job.PK &&
  job.Description == "CEO"
select new {
  person.PK
};

但是上面的LINQ给了我一个异常:

无法创建'Models.Job'类型的常量值。只支持基本类型(如Int32、String和Guid)

LINQ看起来很简单,但我不能弄清楚我错过了什么。

这可能是重复的,但所有类似的问题都是不同的,没有一个解决这个问题。

SQL正在执行连接,为什么你不在你的Linq中执行一个?

另外,我不确定为什么你要投射到一个匿名类型,如果你只想要一个字段,只需选择该字段(将映射到List<T>,其中T是您的PK字段的类型)。

试试这个:

from person in Context.Person
join job in Context.Job on person.jobID equals job.PK
where job.Description == "CEO"
select person.PK;

最新更新