我试图在2个表之间编写一个ling 2实体左连接查询,其中连接列在表中具有不同的数据类型。因此,我使用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位于外部数据库中,因此我们无法修改数据库列。
L2E查询如下所示(请注意dt是DataTable转换为Enumerable类型)
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()
请让我知道我在这里做错了什么,或者是否可以这样做。
感谢。
答案 0 :(得分:3)
如果您在DataTable
上执行此查询,那么这不是Linq To Entities
,因为您在.NET内存中执行。您需要使用Entity Framework
上下文执行查询。