Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 在不更改组顺序的情况下对列表进行排序_Linq_Sorting - Fatal编程技术网

Linq 在不更改组顺序的情况下对列表进行排序

Linq 在不更改组顺序的情况下对列表进行排序,linq,sorting,Linq,Sorting,我有一个没有订购物品的集合。每个项目都有两个属性:一个用于对它们进行分组,另一个用于在该组中对它们进行排序。我需要生成一个集合,其中项目在组中排序,但组顺序不变 例如,这是输入: (12,0)、(44,0)、(22,1)、(100,0)、(1,0)、(22,3)、(22,2) 如何获得此(以下)输出? (12,0)、(44,0)、(22,1)、(22,2)、(22,3)、(100,0)、(1,0) 注意组22:它们一起移动到组最先出现的位置,并在它们之间排序 这里是repo(使用C#7.0元组,

我有一个没有订购物品的集合。每个项目都有两个属性:一个用于对它们进行分组,另一个用于在该组中对它们进行排序。我需要生成一个集合,其中项目在组中排序,但组顺序不变

例如,这是输入:

(12,0)、(44,0)、(22,1)、(100,0)、(1,0)、(22,3)、(22,2)

如何获得此(以下)输出?

(12,0)、(44,0)、(22,1)、(22,2)、(22,3)、(100,0)、(1,0)

注意组
22
:它们一起移动到组最先出现的位置,并在它们之间排序

这里是repo(使用C#7.0元组,别忘了在VS2017中瞄准4.7框架):


未注释的部分还对组进行排序,产生错误的输出。然后,我在索引、分组、展平方面遇到了困难(注释部分)。。这不可能有那么难,或者应该是吗?

你对问题的描述也是对答案组的描述,然后对每组进行排序。
GroupBy
的定义指定组将按照输入的原始顺序出现在输出中:

var output = input.GroupBy(s => s.A).SelectMany(sg => sg.OrderBy(s => s.B)).ToArray();
var output = input.GroupBy(s => s.A).SelectMany(sg => sg.OrderBy(s => s.B)).ToArray();