SQL クエリがあり、それを linq で書き直したいと考えています。この sql コマンドは、2 つのテーブルのみを結合し、それらに対してグループ化を行います。問題は group by にあります。1 つのテーブルで group by を使用すると、すべて問題なく、linq コマンドは sql コマンドと同じ結果を返します。しかし、2 つのテーブルを結合して H.Ucet でグループ化したい場合 (たとえば)、SQL コマンドとして他の結果を返します。結果は左結合を使用した場合と同じですが、デフォルトの内部結合が必要です。
これはSQLコマンドです:
string dotazBankUcty = @"SELECT
H.UCET,
SUM(H.MD) AS MD,
SUM(H.DAL) AS DAL ,
SUM(H.MD_M) AS MD_M,
SUM(H.DAL_ENA) DAL_M,
MAX(UBUC.KOD) AS KOD
FROM ACCOUNT H
inner join UBU on H.UCET = UBU.UCET GROUP BY H.UCET";
このlinqコマンドで書き換えてみます。
var accountQuery = new XPQuery<ACCOUNT >(CoreHelper.DataSession);
var ubuQuery = new XPQuery<UBU>(CoreHelper.DataSession);
var resultBankyUcty = (from h in accountQuery
join u in ubuQuery on h.CompoundKey1.UCET equals u.UCET
group new { h, u } by new { h.CompoundKey1.UCET } into gUcty
select new
{
Ucet = gUcty.Key.UCET,
MD = gUcty.Sum(k => k.h.MD),
DAL = gUcty.Sum(k => k.h.DAL),
MD_M = gUcty.Sum(k => k.h.MDM),
DAL_M = gUcty.Sum(k => k.h.DALM),
KOD = gUcty.Max(k => k.u.KOD)
});
誰でも私を助けることができますか?エラーが表示されません。