Linq查询Join显示Error

本文关键字:Error 显示 Join 查询 Linq | 更新日期: 2023-09-27 18:26:24

Linq查询Join显示错误

使用Join in Linq query时,我收到此错误。

这就是我犯的错误。

无法隐式转换类型"System.Linq.IQueryable"<匿名类型#1>'到'System.Linq.IQUERABLE<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 
      };

Linq查询Join显示Error

由于您没有向我们展示此代码所在的上下文,我猜job变量正在其他地方(作为返回变量?)被预期IQueryable<jobxml> 的东西使用

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

(希望)详细阐述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;
}