C# Linq查询联接显示错误
Linq查询联接显示错误 在Linq查询中使用C# Linq查询联接显示错误,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,Linq查询联接显示错误 在Linq查询中使用连接时,我遇到了这个错误 这就是我犯的错误 无法将类型“System.Linq.IQueryable”隐式转换为“System.Linq.IQueryable”。存在显式转换(是否缺少强制转换?) 这是我的密码 var job = from jx in bc.db.jobxml join jad in bc.db.Job_Agent_Details on jx.agent_id equals jad.Id orderby
连接时,我遇到了这个错误
这就是我犯的错误
无法将类型“System.Linq.IQueryable”隐式转换为“System.Linq.IQueryable”。存在显式转换(是否缺少强制转换?)
这是我的密码
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
};
由于您没有向我们展示此代码所在的上下文,我猜测job
变量正在其他地方(作为返回变量?)被期望IQueryable
在选择
中,您正在创建一个匿名类型的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
};
var job=来自bc.db.jobxml中的jx
在jx.Agent\u id等于jad.id上的bc.db.Job\u Agent\u详细信息中加入jad
orderby jx.id
选择new jobxml/因为您没有向我们显示此代码所在的上下文,我猜测job
变量正在其他地方(作为返回变量?)被预期的IQueryable
在选择
中,您正在创建一个匿名类型的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
};
var job=来自bc.db.jobxml中的jx
在jx.Agent\u id等于jad.id上的bc.db.Job\u Agent\u详细信息中加入jad
orderby jx.id
选择new jobxml/(希望)详细说明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;
}
public IQueryable DoStuff()
{
//这里可能有一些代码
var job=来自bc.db.jobxml中的jx
在jx.Agent\u id等于jad.id上的bc.db.Job\u Agent\u详细信息中加入jad
orderby jx.id
选择新的
{
jx.jobtitle,
jx.jobrole,
jx.jobhour,
jx.companyname,
jx.jobposition,
jx.location,
jx.closedate,
jx.jobdescription
};
返回工作;
}
这里的问题是linq查询生成了一个匿名类型的对象,而函数试图返回一个IQueryable
正如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;
}
public IQueryable DoStuff()
{
//这里可能有一些代码
var job=来自bc.db.jobxml中的jx
在jx.Agent\u id等于jad.id上的bc.db.Job\u Agent\u详细信息中加入jad
orderby jx.id
选择新的xxx.Models.jobxml()
{
JobTitle=jx.JobTitle,
JobRole=jx.JobRole,
工作小时=jx.JobHour,
//其余的对象属性——注意,我在这里对jobxml对象进行假设
};
返回工作;
}
(希望)详细说明大卫的答案。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;
}
public IQueryable DoStuff()
{
//这里可能有一些代码
var job=来自bc.db.jobxml中的jx
在jx.Agent\u id等于jad.id上的bc.db.Job\u Agent\u详细信息中加入jad
orderby jx.id
选择新的
{
jx.jobtitle,
jx.jobrole,
jx.jobhour,
jx.companyname,
jx.jobposition,
jx.location,
jx.closedate,
jx.jobdescription
};
返回工作;
}
这里的问题是linq查询生成了一个匿名类型的对象,而函数试图返回一个IQueryable
正如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;
}
public IQueryable DoStuff()
{
//这里可能有一些代码
var job=来自bc.db.jobxml中的jx
在jx.Agent\u id等于jad.id上的bc.db.Job\u Agent\u详细信息中加入jad
orderby jx.id
选择新的xxx.Models.jobxml()
{
JobTitle=jx.JobTitle,
JobRole=jx.JobRole,
工作小时=jx.JobHour,
//其余的对象属性——注意,我在这里对jobxml对象进行假设
};
返回工作;
}
根据您删除的上一个问题,您能否显示该问题的上下文?此代码本身不应生成错误。请包括编译时类型的bc.db.jobxml
和bc.db.Job\u Agent\u详细信息
。如果对于某些Foo
,这些类型是iqeryable
而不是iqeryable
,这将导致问题……此外,您之前的问题有不同的错误消息,并暗示这些类型是iqeryable
到iqeryable
@Kritner:对不起,我在问题中有一些错误,所以我删除了它。你可以编辑问题,你不必删除:P在这一点上,我甚至不能引用我以前的答案。根据你以前删除的问题,你能显示其中的上下文吗?此代码本身不应生成错误。请包括编译时类型的bc.db.jobxml
和bc.db.Job\u Agent\u详细信息
。如果对于某些Foo
,这些类型是iqeryable
而不是iqeryable
,这将导致问题……此外,您之前的问题有不同的错误消息,并暗示这些类型是iqeryable
到iqeryable
@Kritner:对不起,我在问题中有一些错误,所以我删除了它。你可以编辑问题,你不必删除:P在这一点上,我甚至无法引用我以前的答案。你添加的唯一内容是错误消息,而不是这个linq查询的代码。我无法从两个表中获取内容,但通过给jobxml,我给了jx,它现在可以工作了。投赞成票:)酷。我接受了你的答案,Kritner也很好地解释了答案,谢谢:)你唯一添加的是错误消息,而不是这个linq查询的代码。我无法从两个选项卡获取内容