LINQ to EF Cross Join问题

时间:2013-05-29 15:18:26

标签: linq linq-to-entities entity-framework-5

我正在使用Entity Framework 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看起来很简单,但我无法弄清楚我错过了什么。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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;