0

結合列のデータ型がテーブル内に異なる2つのテーブル間で、ling2エンティティの左結合クエリを作成しようとしています。したがって、新しいキーワードを使用して、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はEnumerableタイプに変換されたDataTableであることに注意してください)

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

でこのクエリを実行しているDataTable場合、これはLinq To Entities.NETメモリで実行しているためではありません。コンテキストを使用してクエリを実行する必要がありEntity Frameworkます。

于 2012-08-05T11:59:43.047 に答える