ListofLists = new List>(); ListofList-6ren">
gpt4 book ai didi

c# - 合并列表和 "merge"排序

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:51 26 4
gpt4 key购买 nike

我有一个列表的列表,我正在尝试弄清楚如何将它们合并到一个独特的列表中,除了我还想考虑当前每个列表的排序。

例如:

List<List<string>> ListofLists = new List<List<string>>();
ListofLists.Add(new List<string>() { "Color", "Size", "Dimensions" });
ListofLists.Add(new List<string>() { "Color", "Size", "Dimensions" });
ListofLists.Add(new List<string>() { "Color", "Size", "Weight", "Dimensions" });

我希望“合并”列表的内容是:

Color, Size, Weight, Dimensions

我看过 Unions 但这会在列表末尾添加“权重”——我希望它“合并”列表以保持“额外”值内联(尽可能多)。

我还发现 this thread 很接近,但它似乎在随机点插入了“额外”值。

抱歉,如果这没有解释清楚,我真的不知道如何描述。

编辑:这样做的目的是将多个产品放在一个表格中,并在下面列出它们的规范,在同一行显示相似的规范。有些产品可能有不同的规范,但在大多数情况下它们是相同的。

所以我试图生成一个可能的规范名称列表,以显示在第一列中。通常,最后的规范与保修相关,顶部的规范与型号等相关。因此,如果产品 3 有一些奇怪的规范,我宁愿将其插入某个地方,而不是在保修期内附加到最后。

示例输出:

Model #    | 123 | 456 | 789
Color | red | red | blue
Size | big | big | small
Weight | | | 3
Dimensions | 1" | 1" | 1"x1"x1"
Warranty | 1 | 2 | 3

可能不是最好的例子,但例如 123 和 456 可能没有重量规范。因此,与其将 Weight 放在底部(当我做一个 Union 时会发生这种情况),我希望它尽可能接近原始列表的“内联”。您无法在此示例中看到每个产品可能有 30 个规范,因此最好将重要的规范放在最上面,因为它们的规范列表反射(reflect)了这一点。

最佳答案

创建列表中每个元素的排序图。 (所以对于 ACDEFGHJ、ABDFGHIJ、ABCDEGIJ,你会得到 A->C、A->B、C->D、B->D、B->C 等)希望只有一个节点没有向内弧(在这种情况 A);将此元素添加到结果列表中。删除该节点及其向外的弧线,然后重复该过程。如果你有多个没有向内弧的节点,那么你可以随机选择一个。如果你没有没有向内弧的节点,那么你就有了一个循环。您可以通过随机选择一个成员来打破循环,但您必须先找到循环...

关于c# - 合并列表和 "merge"排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com