以下に示すように、2つのテーブルがあります。
表1
╔══════════════╦═════╦════╗
║ NAME ║ AGE ║ ID ║
╠══════════════╬═════╬════╣
║ firstname 1 ║ 20 ║ 1 ║
║ firstname 2 ║ 21 ║ 2 ║
║ firstname 3 ║ 22 ║ 3 ║
║ firstname 4 ║ 23 ║ 4 ║
║ firstname 5 ║ 24 ║ 5 ║
║ firstname 6 ║ 25 ║ 6 ║
║ firstname 7 ║ 26 ║ 7 ║
║ firstname 8 ║ 27 ║ 8 ║
║ firstname 9 ║ 28 ║ 9 ║
║ firstname 10 ║ 29 ║ 10 ║
╚══════════════╩═════╩════╝
表 2
╔════════╦══════════╗
║ LINKID ║ QUANTITY ║
╠════════╬══════════╣
║ 1 ║ 1 ║
║ 1 ║ 1 ║
║ 2 ║ 1 ║
║ 2 ║ 1 ║
║ 2 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 1 ║
║ 3 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 4 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 5 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 6 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 7 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 8 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 9 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
║ 10 ║ 1 ║
╚════════╩══════════╝
結果表はこんな感じ。
╔══════════════╦═════╦════╦═════╗
║ NAME ║ AGE ║ ID ║ QTY ║
╠══════════════╬═════╬════╬═════╣
║ firstname 1 ║ 20 ║ 1 ║ 2 ║
║ firstname 2 ║ 21 ║ 2 ║ 3 ║
║ firstname 3 ║ 22 ║ 3 ║ 4 ║
║ firstname 4 ║ 23 ║ 4 ║ 5 ║
║ firstname 5 ║ 24 ║ 5 ║ 6 ║
║ firstname 6 ║ 25 ║ 6 ║ 7 ║
║ firstname 7 ║ 26 ║ 7 ║ 8 ║
║ firstname 8 ║ 27 ║ 8 ║ 9 ║
║ firstname 9 ║ 28 ║ 9 ║ 10 ║
║ firstname 10 ║ 29 ║ 10 ║ 11 ║
╚══════════════╩═════╩════╩═════╝
これを 1 つの linq ステートメント内で終了したいと考えています。(完全に不可能な場合は、2 つのステートメント)
私はここまで私の声明を実行しました。
var resultQuery = from a in dtbl1.AsEnumerable()
join b in dtbl2.AsEnumerable()
on a.Field<int>("ID") equals b.Field<int>("LinkID")
select new
{
ID = a["ID"],
Name = a["Name"],
Age = a["Age"],
Qty = b["Quantity"]
}
;
そのステートメントは2つのテーブルを結合しますが、数量を数え続ける方法がわかりません.
何か案が?
2 番目のクエリを使用する必要がある場合は、完了しています。
var secondResultQuery = from row in resultQuery
group row by new { row.ID, row.Name, row.Age } into g
select new
{
g.Key.ID,
g.Key.Name,
g.Key.Age,
totalCount = g.Sum(count => (int)count.Qty)
};