私の LINQ クエリは、以下の期待される出力を生成しません。基本的には、table2.code に対応する table3.cost と、table1.alias で分類され、table1.priority で並べられた table2.class の合計です。DataSet に 2 つの DataRelation を追加しました。
ds.Relations.Add("Table1Table2", ds.Tables[1].Columns("ID"), ds.Tables[2].Columns("ParentID");
ds.Relations.Add("Table2Table3",
new DataColumn[] { ds.Tables[2].Columns["Code"], ds.Tables[2].Columns["Class"] },
new DataColumn[] { ds.Tables[3].Columns["Code"], ds.Tables[3].Columns["Class"] });
var query = from aliases in table1.AsEnumerable()
join children in table2.AsEnumerable() on aliases("ID") equals children("ParentID")
orderby aliases("priority")
select new
{
Name = aliases("alias"),
Cost =
from data in table3.AsEnumerable()
group data by new { code = data("code"), classcode = data("class") }
into datatemp
select new
{
cost = datatemp.Sum(x => x("cost"))
}
};
私が間違っていることはありますか?前もって感謝します!
table1: エイリアスと優先順位のリスト ----------------- エイリアスの優先度 エイリアス1 1 エイリアス2 2 エイリアス3 4 エイリアス4 3
table2: ParentID (1 対多) によって table1 に結合された子レコード ----------------- コード クラス ParentID コード1 クラス1 1 コード 2 クラス 2 1 code3 class3 2 code4 class4 4
table3: クラスとコードによって table2 に結合されたデータ (1 対多) ----------------- コードクラスのコスト コード 1 クラス 1 1.00 コード1 クラス1 10.00 コード1 クラス1 26.00 code2 class2 5.00 コード 2 クラス 2 0.00 code3 class3 1000.00
期待される出力:
エイリアス1 42.00 エイリアス2 1000.00 エイリアス4 0.00 エイリアス3 0.00