按列列出<string []>列表

use*_*566 1 c# arrays sorting list

我有列表,我想按很多列排序.例如,string []有5个元素(5列),List有10个元素(10行).例如,我想开始按第1列排序,然后按第3列排序,然后按第4列排序.

如何用C#以最简单的方式完成?

我想过这样的算法:

  1. 删除与我不想用于排序的列对应的值
  2. 查找剩下的每个列,可以用来存储其值的最长字符串
  3. 将每一行更改为字符串,其中每个单元格占用的字符数与给定列的值的最大字符数一样多
  4. 为每个字符串值分配int和index
  5. 对这些字符串值排序
  6. 借助已排序的索引对实际数据进行排序

但我认为这个算法非常糟糕.如果可能的话,你能否建议我使用C#和.NET已有的功能?

I4V*_*I4V 5

List<string[]> list = .....

var newList = list.OrderBy(x => x[1]).ThenBy(x => x[3]).ThenBy(x => x[4]).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 首先使用`var query = list.OrderBy(x => x [i]);`,然后在运行时你可以多次添加`query = query.ThenBy(x => x [j]);` (2认同)