linq を使用して 2 つのデータテーブルを結合しようとしています
var invoices420 = dt420_.AsEnumerable();
var invoices430 = dt430_.AsEnumerable();
var query = from inv430 in invoices430
join inv420 in invoices420 on inv430.LinkDoc equals inv420.LinkDoc
orderby inv430.SID
select new
{
LinkDoc = inv430.LinkDoc,
TotalIn = Math.Round(inv430.Credit, 2),
TotalOut = ((inv420 == null) ? 0 : Math.Round(inv420.Debit, 2))
};
結合は問題ではないようですが、「System.Data.DataRow」には「LinkDoc」の定義が含まれておらず、「System.Data.DataRow」タイプの最初の引数を受け入れる拡張メソッド「LinkDoc」はありませんというエラーが表示されます' が見つかる可能性があります (using ディレクティブまたはアセンブリ参照がありませんか?)。
inv430.Field("linkdoc") を使用せずに inv430.LinkDoc などの DataTable の列を参照するにはどうすればよいですか?
結果セットでグループ化したい場合は、考えています
var q2 = query
.GroupBy(item => item.LinkDoc);
return q2.ToArray();
問題は、q2 ですべての列 (linkdoc、totalin、totalout) を取得できないことです。
元データは
dt420_
Linkdoc Credit
Invoice1 500
Invoice2 100
Invoice3 200
dt430_
LinkDoc Debit
Invoice1 100
Invoice1 100
Invoice2 200
Result would be
LinkDoc TotalIn(Credit) TotalOut(Debit)
Invoice1 500 200
Invoice2 100 200
Invoice3 200 0