Linq查询加入显示错误
使用Join in Linq query
时,我收到此错误。
这是我得到的错误。
无法隐式转换类型'System.Linq.IQueryable< AnonymousType#1>'到'System.Linq.IQueryable< xxx.Models.jobxml>' '。存在显式转换(您是否错过了演员?)
这是我的代码
var job = from jx in bc.db.jobxml
join jad in bc.db.Job_Agent_Details on jx.agent_id equals jad.Id
orderby jx.id
select new
{
jx.jobtitle,
jx.jobrole,
jx.jobhour,
jx.companyname,
jx.jobposition,
jx.location,
jx.closedate,
jx.jobdescription
};
答案 0 :(得分:3)
由于您没有向我们展示此代码所处的上下文,我将猜测job
变量正在其他地方(作为返回变量?)被期望IQueryable<jobxml>
<的东西使用/ p>
在select
您正在创建IQueryable
匿名类型,但您可以将其更改为jobxml
,如下所示:
var job = from jx in bc.db.jobxml
join jad in bc.db.Job_Agent_Details on jx.agent_id equals jad.Id
orderby jx.id
select new jobxml //<-- This is the important change
{
//snip
};
答案 1 :(得分:3)
(希望)详细阐述DavidG的答案。您var job = ...
所处的功能可能具有方法签名,例如:
public IQueryable<xxx.Models.jobxml> DoStuff()
{
// some code is here potentially
var job = from jx in bc.db.jobxml
join jad in bc.db.Job_Agent_Details on jx.agent_id equals jad.Id
orderby jx.id
select new
{
jx.jobtitle,
jx.jobrole,
jx.jobhour,
jx.companyname,
jx.jobposition,
jx.location,
jx.closedate,
jx.jobdescription
};
return job;
}
这里的问题是您的linq查询构建了一个匿名类型对象,而该函数正在尝试返回IQueryable<xxx.Models.jobxml>
正如DavidG所指出的,你的linq查询需要创建一种jobxml,而不是匿名类型。这可以这样完成:
public IQueryable<xxx.Models.jobxml> DoStuff()
{
// some code is here potentially
var job = from jx in bc.db.jobxml
join jad in bc.db.Job_Agent_Details on jx.agent_id equals jad.Id
orderby jx.id
select new xxx.Models.jobxml()
{
JobTitle = jx.jobtitle,
JobRole = jx.jobrole,
JobHour = jx.jobhour,
// the rest of your object properties - note i'm making assumptions about your jobxml object here
};
return job;
}