LINQ を使用してデータをグループ化する方法と、それを個別の項目に分割する方法は知っていますが、部分的にのみグループ化を解除する方法がわかりません。
次のような一連のデータがあります。
var data = new Dictionary<Header, Detail>()
{
{ new Header(), new Detail { Parts = new List<string> { "Part1", "Part1", "Part2" } } }
};
これを正しく処理するには、重複部分のすべてのインスタンスを辞書の個別のエントリにする必要があります (ただし、辞書のままかどうかは問題ではありません -IEnumerable<KeyValuePair<Header, Detail>>
完全に受け入れられます)。Parts
ただし、リストを完全に分割したくはありません。リストに別の部分を含めることは問題ありません。
具体的には、最終データを次のようにしたいと考えています。
{
{ new Header(), new Detail { Parts = new List<string> { "Part1", "Part2" } } },
{ new Header(), new Detail { Parts = new List<string> { "Part1" } } },
}
より複雑な例:
var data = new Dictionary<Header, Detail>()
{
{ new Header(1), new Detail { Parts = new List<string> { "Part1", "Part1", "Part2" } } },
{ new Header(2), new Detail { Parts = new List<string> { "Part1", "Part2" } } },
{ new Header(3), new Detail { Parts = new List<string> { "Part1", "Part2", "Part2", "Part2", "Part3", "Part3"} } }
};
var desiredOutput = new List<KeyValuePair<Header, Detail>>()
{
{ new Header(1), new Detail { Parts = new List<string> { "Part1", "Part2" } } },
{ new Header(1), new Detail { Parts = new List<string> { "Part1" } } },
{ new Header(2), new Detail { Parts = new List<string> { "Part1", "Part2" } } },
{ new Header(3), new Detail { Parts = new List<string> { "Part1", "Part2", "Part 3" } } },
{ new Header(3), new Detail { Parts = new List<string> { "Part2", "Part3" } } },
{ new Header(3), new Detail { Parts = new List<string> { "Part2" } } }
};
何かアドバイス?