我知道如何使用 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" } } }
};
有什么建议吗?