合并列表和“合并”排序

本文关键字:合并 排序 列表 | 更新日期: 2023-09-27 18:17:32

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

,

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" });

我希望"合并"列表的内容为:

颜色,尺寸,重量,尺寸

我已经看过联合,但这增加了"权重"到列表的末尾——我希望它"合并"列表,保持"额外"值内联(尽可能多)。

我也发现这个线程是接近的,但它似乎在一个随机点插入"额外"的值。

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

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

因此,我试图生成一个可能的Spec名称列表,以显示在第一列中。通常,最后的规格与保修有关,顶部的规格与型号有关,等等。所以,如果产品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没有重量规格。所以,而不是在底部附加重量(这是发生当我做一个联盟),我希望它是尽可能接近"内联"与它的原始列表。在这个例子中你看不到,但每个产品可能有30个规格,所以最好把重要的放在最上面,因为它们的规格列表反映了。

合并列表和“合并”排序

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

看看LINQ的Concat和Distinct扩展方法。他们应该能够帮助你完成你所追求的。