如何订购2的副本
本文关键字:副本 何订购 | 更新日期: 2023-09-27 18:27:45
我有一个List,它包含4个对象。它可以包含更少或更多,但总是2的倍数,即2、4、6、8、10等
在我的特定情况下,我有4个对象,但它们必须成对处理,我需要按它们排序。
我需要订购的类型可以有一个值1或2。我确实试过了,但它把每个物体一个接一个地排列,它们必须成对放置。
因此,两个第一个对象属于彼此,我想将这两个对象排序在一起,然后其他两个对象属于另一个,我想对这两个物体排序在一起。
下面是一个例子。
Name: Apple
Type: 2
Name: Orange
Type: 1
Name: Pear
Type: 2
Name: Peach
Type: 1
当我想获得这样的列表时。请注意,在对这对进行排序时,橙色和苹果的位置发生了变化。梨和桃子也是如此。
Name: Orange
Type: 1
Name: Apple
Type: 2
Name: Peach
Type: 1
Name: Pear
Type: 2
这是我的一个例子,当然是错误的。
我尝试了很多方法,但当然我一直在尝试,先是1,然后是2,因为这没有考虑到我想成对排序。
var wrongSort = myList.Select(x => x.Items).OrderBy(x => x.Type).ToList();
当然,"myList"是一个标准集合,里面是一个项目列表。物品清单是我想要成对订购的。
编辑
关于使用Tuples,这可能会起作用,但列表是作为标准集合传递给我的,最后我仍然需要一个标准列表。郁金香在这里真的不管用。
集合用于foreach
迭代,因此顺序很重要。
您可以将列表投影到包含列表中位置的新列表中,然后首先按"组号"排序:
myList.Select((f,i) => new {f, i}) // add the position in the list
.OrderBy(fi => fi.i / n) // "groups" into n items (2, 4, etc.)
.ThenBy(fi => fi.f.Type) // orders within each group by the Type
.Select (fi => fi.f) // removes the added index