0

動作して必要な情報を取得するエンティティフレームワークを使用したlinqクエリがありますが、現在、反対の操作を行うのに問題があります。

現在、テーブルをリンクするための結合を使用して必要なすべてのデータを取得していますが、一部の結合と一致しないデータを取得する必要があります。

linqで「等しい」しか使用できないことは知っていますが、等しくない情報が必要です。つまり、ap.idLookのc.IsoNeのecに参加してec.idAllと等しくない

以下は動作するコードですが、私が今それをどのように必要としているかではありません。どんな助けもいただければ幸いです...

var test = (from bil in bilats
                join ap in c.Allegro on bil.idAll equals ap.idAll
                join ec in c.IsoNe on ap.idLook equals ec.idAll
                join cb in c.Comp on ap.idCompBuy equals cb.idComp
                join cs in c.Com on ap.idCompSell equals cs.idComp
                join iby in c.IsoNe on cb.idComp equals iby.idComp
                join iss in c.IsoNe on cs.idComp equals isl.idComp
             orderby bil.HBegin ascending
             where bil.HBegin >= ec.DateTStart
             where bil.HBegin < ec.DateTEnd
             select new
             {
                 Cont = ec.ContractID,
                 ContType = ap.idScheduleType,
                 Sel = isel.ISONE1,
                 Buy = ibel.ISONE,
                 HBegin = bil.HBegin,
              }).ToList();
4

2 に答える 2

2

私の知る限り、デカルト積を作成してから、where 条件を使用してフィルタリングする必要があります。(左結合ではなく内部結合が必要であるという、おそらく性急な仮定をしていますが、内部結合はjoinキーワードが表すものです。) 次のようなもの:

var test = (from bil in bilats
                join ap in c.Allegro on bil.idAll equals ap.idAll
                from ec in c.IsoNe where ap.idLook != ec.idAll
                join cb in c.Comp on ap.idCompBuy equals cb.idComp
                join cs in c.Com on ap.idCompSell equals cs.idComp
                join iby in c.IsoNe on cb.idComp equals iby.idComp
                join iss in c.IsoNe on cs.idComp equals isl.idComp
             orderby bil.HBegin ascending
             where bil.HBegin >= ec.DateTStart
             where bil.HBegin < ec.DateTEnd
             select new
             {
                 Cont = ec.ContractID,
                 ContType = ap.idScheduleType,
                 Sel = isel.ISONE1,
                 Buy = ibel.ISONE,
                 HBegin = bil.HBegin,
              }).ToList();
于 2012-10-10T19:36:07.387 に答える
0

結合は間違ったアプローチかもしれません。ユニオンまたはサブクエリを見てください

于 2012-10-10T19:35:01.100 に答える