C# 如何订购2份的副本?

C# 如何订购2份的副本?,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,我有一个列表,它包含4个对象。它可以包含更少或更多,但始终是2的倍数,即2、4、6、8、10等 在我的具体案例中,我有4个对象在里面,但它们必须成对处理,我需要按它们排序 我需要订购的类型可以有一个值1或2。我确实试过了,但它把每一个物体一个接一个地排列,它们必须成对 因此,前两个对象相互属于,我想将这两个对象排序在一起,然后其他两个对象相互属于,我想将这两个对象排序在一起 这里有一个例子 Name: Apple Type: 2 Name: Orange Type: 1 Name: Pear

我有一个列表,它包含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”是一个标准的集合,里面有一个项目列表。项目列表是我想要成对订购的

编辑 关于使用元组,这可能会起作用,但列表作为标准集合传递给我,我仍然需要在末尾使用标准列表。元组在这里真的不起作用


集合用于每个迭代中,因此顺序很重要。

您可以将列表投影到包含列表中位置的新列表中,然后首先按“组号”排序:


您可以将列表投影到包含列表中位置的新列表,然后首先按“组号”排序:


如果是成对的,为什么不把这两件东西放在一个包装袋里呢?因此,如果方便的话,您可以创建一个水果对类或使用一个元组。列表不会作为元组返回给我,我仍然需要一个标准集合。。但我需要对2 x 2进行排序。如果这有意义的话。我的列表是我的完美格式,但顺序不对。列表正在foreach的迭代中使用。@Martin不,它的格式不完美。如果有人以这种不可管理的格式向您提供此数据,您应该花时间将其解析为真实类型,然后您可以担心对其进行排序。我不确定为什么您认为使用新类型会阻止您使用foreach循环或以后对数据执行任何操作。如果它们是成对的,你为什么不把这两件东西放在一个包装袋里呢?因此,如果方便的话,您可以创建一个水果对类或使用一个元组。列表不会作为元组返回给我,我仍然需要一个标准集合。。但我需要对2 x 2进行排序。如果这有意义的话。我的列表是我的完美格式,但顺序不对。列表正在foreach的迭代中使用。@Martin不,它的格式不完美。如果有人以这种不可管理的格式给你这些数据,你应该花时间将其解析为一个真正的类型,然后你就可以担心排序了。我不知道为什么你觉得使用一个新类型会阻止你以后使用foreach循环或对数据做任何你想做的事情。很好,D Stanley,这很管用。。我认为OrderBy和除以2意味着成对地做。。你能再解释一下吗。我从来没有像那样使用过OrderBy。。。谢谢斯坦利先生,这很有效。。我认为OrderBy和除以2意味着成对地做。。你能再解释一下吗。我从来没有像那样使用过OrderBy。。。谢谢
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