C# Linq to entities join语句中的字符串转换错误-此函数只能从Linq to entities调用

C# Linq to entities join语句中的字符串转换错误-此函数只能从Linq to entities调用,c#,asp.net,entity-framework-4,linq-to-entities,C#,Asp.net,Entity Framework 4,Linq To Entities,我试图在两个表之间编写一个Ling2实体左联接查询,其中联接列在表中具有不同的数据类型。因此,我使用new关键字使用SqlFunctions.StringConvert()函数执行字符串转换 但这会引发一个错误,即“此函数只能从LINQ调用到实体” sql查询将如下所示 select distinct j.jobid from jobs j left join jobfilters jf on j.jobid = jf.jobid left join vwbranchmaster bm on

我试图在两个表之间编写一个Ling2实体左联接查询,其中联接列在表中具有不同的数据类型。因此,我使用new关键字使用SqlFunctions.StringConvert()函数执行字符串转换

但这会引发一个错误,即“此函数只能从LINQ调用到实体”

sql查询将如下所示

select distinct j.jobid from jobs j
left join jobfilters jf
on j.jobid = jf.jobid 
left join vwbranchmaster bm
on bm.branchid = jf.jobfilterkey 
在此查询中,bm.branchid为int,而jobfilterkey为nvarchar。不幸的是,Branchmaster位于外部DB中,因此我们无法修改DB列

L2E查询如下所示(请注意,dt是转换为可枚举类型的DataTable)

来自J in dt
join JFBRegion in JobFilter on J.Field(“JobId”)等于JFBRegion.JobId到JFBRegion_join
来自JFBRJ的JFBRegion_join.DefaultIfEmpty()中的JFBRJ
在新的{JobFilterKey=JFBRJ.JobFilterKey}等于新的{JobFilterKey=SqlFunctions.StringConvert((十进制)BRMAS.BranchID)}上将BranchMaster中的BRMAS连接到BMASJF!
从BMASJF_join.DefaultIfEmpty()中的BMASJF
请让我知道我在这里做错了什么,或者这是否可能


谢谢。

如果您在
数据表上执行此查询
,则这不是
Linq到实体
,因为您在.NET内存中执行此查询。您需要使用
实体框架
上下文执行查询。

如果您在
数据表
上执行此查询,则这不是
Linq to Entities
,因为您在.NET内存中执行。您需要使用
实体框架
上下文执行查询。

变量dt、JobFilter、BranchMaster的类型是什么?抱歉,我无法包含整个查询。我确实有一个select,它类似于selectnew{vJobId=J.Field(“JobId”),}@usr,dt-DataTable.AsEnumerable();JobFilter-IEnumerable,,BranchMaster-ObjectSet变量dt,JobFilter,BranchMaster的类型是什么?抱歉,我没有包括整个查询。我确实有一个select,它类似于selectnew{vJobId=J.Field(“JobId”),}@usr,dt-DataTable.AsEnumerable();JobFilter-IEnumerable,,BranchMaster-ObjectSet
from J in dt
join JFBRegion in JobFilter on J.Field<Guid>("JobId") equals JFBRegion.JobID into JFBRegion_join
from JFBRJ in JFBRegion_join.DefaultIfEmpty()
join BRMAS in BranchMaster on new { JobFilterKey = JFBRJ.JobFilterKey } equals new { JobFilterKey = SqlFunctions.StringConvert((decimal)BRMAS.BranchID) } into BMASJF_join
from BMASJF in BMASJF_join.DefaultIfEmpty()