このタイプの問題のラベルを修正する必要があるかどうかはわかりませんが、以下の一般的な解決策に関する考えはありますか?ネストされたグループ化戦略/アルゴリズムC#
Date "1/1/2009"
Customer a
Invoice 1
Customer b
Invoice 4
Invoice 5
Date "1/2/2009"
Customer a
Invoice 2
Invoice 3
Customer b
Invoice 6
もできますのようなグラフで
var tree = invoices.ToHeirarchy(t => {
t.GroupBy(x => x.Date);
t.GroupBy(x => x.Customer);
})
結果:ようなものを指定するところ、私が使用することができますどのような技術
var invoices = new List<Invoice>()
{
new Invoice() { Id = 1, Customer = "a", Date = DateTime.Parse("1/1/2009") },
new Invoice() { Id = 2, Customer = "a", Date = DateTime.Parse("1/2/2009") },
new Invoice() { Id = 3, Customer = "a", Date = DateTime.Parse("1/2/2009") },
new Invoice() { Id = 4, Customer = "b", Date = DateTime.Parse("1/1/2009") },
new Invoice() { Id = 5, Customer = "b", Date = DateTime.Parse("1/1/2009") },
new Invoice() { Id = 6, Customer = "b", Date = DateTime.Parse("1/2/2009") }
}
:請求書のコレクションを考えると
次のようにして渡してください(どのレベルからの請求書の計算も可能です)?代わりに木の
Assert.AreEqual(3, tree.Node[0].Items.Count)
Assert.AreEqual(DateTime.Parse("1/1/2009"), tree.Node[0].Key)
Assert.AreEqual(3, tree.Node[1].Items.Count)
Assert.AreEqual(DateTime.Parse("1/2/2009"), tree.Node[1].Key)
Assert.AreEqual("a", tree.Node[0].Node[0].Key)
Assert.AreEqual(1, tree.Node[0].Node[0].Items.Count)
Assert.AreEqual("b", tree.Node[0].Node[1].Key)
Assert.AreEqual(2, tree.Node[0].Node[1].Items.Count)
プロジェクションでは何をお探しですか?匿名型、定義済みの型、DataSetやDictionaryなどの一般的な構造体 – jpierson