Linq查询加入显示错误

时间:2014-10-14 11:49:39

标签: c# linq linq-to-sql

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 
      };

2 个答案:

答案 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;

}