0

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

但这会引发错误,提示“只能从 LINQ to Entities 调用此函数。”

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()

请让我知道我在这里做错了什么,或者这是否可能。

谢谢。

4

1 回答 1

3

如果您在 a 上执行此查询,DataTable那么这不是Linq To Entities因为您在 .NET 内存中执行。您需要使用Entity Framework上下文执行查询。

于 2012-08-05T11:59:43.047 回答