2
次のSQL文をLINQに変換する方法はありますか?複数のSQL LEFT JOIN文をLINQに変換する方法
select ve.EntityID
, fin1.FinanceStat as FinanceStat_New
, fin2.FinanceStat as FinanceStat_Old
from ValuationEvents_PIT_New as ve
left join FinStat_New as Fin1
on ve.EntityID = Fin1.EntityID
left join FinStat_Old as Fin2
on ve.EntityID = Fin2.EntityID
where Fin1.FinanceStat ne Fin2.FinanceStat
and Fin2.FinanceStat is not null
and charindex(Fin1.FinanceStat, 'abc') < 1
and charindex(Fin1.FinanceStat, 'xyz') < 1
ここに私のバージョンですが、私はそれを見るために余分なペアが必要です。なぜならCHARINDEX(Fin1.FinanceStat、 'ABC')x.FinStatNew1がnullと 'ABC' でない場合は、常に0を返します< 1、の
var result = (from ve in valuationEventsPit
join fsn in finStatNew on ve.EntityId equals fsn.EntityID into veFsn
from fin1 in veFsn.DefaultIfEmpty()
join fso in finStatOld on ve.EntityId equals fso.EntityID into veFso
from fin2 in veFso.DefaultIfEmpty()
select new
{
ve.EntityId,
FinStatNew1 = fin1 == null ? null : fin1.FinanceStat,
FinStatNew2 = fin2 == null ? null : fin2.FinanceStat
}).
Where(x => x.FinStatNew1 != null &&
x.FinStatNew2 != null &&
x.FinStatNew1 != x.FinStatNew2 &&
!(x.FinStatNew1.Contains("abc")) &&
!(x.FinStatNew1.Contains("xyz"))).ToList();
私はx.FinStatNew1を除く午前理由== nullをまたは 'xyz'が存在せず、x.FinStatNew1がnullの場合はnullを返し、条件はfalse(null < 0)になります。
ありがとうございました。
ありがとうございます。これはLINQ to SQLまたはEFではなく、これはLINQ to Objectsであり、nullをチェックする必要があります。それ以外の場合はNullReferenceExceptionが発生します。 –
ああ、その場合、私たちがここでやることができるより多くのことがあります。私は更新します。 –
もう一度ありがとうございます。私はあなたが今この方法でそれをしたので、あなたが今Inner Joinを使用しているのを見ます。私の翻訳が正しいかどうかわからない、そうでなければ私は助言を求めないだろう:)。左結合を使用していても、私が持っているクエリが内部結合を実行しているとはまだ信じていますか?私のコードの代わりにオリジナルのSQLを読んでください。 –