我正在使用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看起来很简单,但我无法弄清楚我错过了什么。
这可能是重复的,但所有与此类似的问题都不同,并且没有一个问题解决了这个问题。
任何帮助都将不胜感激。
答案 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;