You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不扁平化的前提下对C#二维数组按列排序?

对C#多维数组按行字典序排序(无需扁平化)

针对你给出的int[,]多维数组,要实现按行的字典序排序(先比首列元素,首列相同则依次比较后续列元素),可以按以下步骤实现:

实现思路

  • 将多维数组转换为交错数组(int[][]),方便单独处理每一行
  • 自定义字典序比较逻辑,对行进行排序
  • 将排序后的交错数组转换回原格式的多维数组

代码实现

方法一:自定义比较器通用方案(适配动态列数)

int[,] numbers = new int[4,3] { { -1,3,5 }, {5,6,8 },{-1,0,2},{2,3,5} };

// 1. 提取所有行到交错数组
int rowCount = numbers.GetLength(0);
int colCount = numbers.GetLength(1);
int[][] rows = new int[rowCount][];
for (int i = 0; i < rowCount; i++)
{
    rows[i] = new int[colCount];
    for (int j = 0; j < colCount; j++)
    {
        rows[i][j] = numbers[i, j];
    }
}

// 2. 按字典序排序:依次比较每一列元素
Array.Sort(rows, (a, b) =>
{
    for (int i = 0; i < colCount; i++)
    {
        int compareResult = a[i].CompareTo(b[i]);
        if (compareResult != 0)
            return compareResult;
    }
    return 0;
});

// 3. 转换回多维数组
int[,] sortedNumbers = new int[rowCount, colCount];
for (int i = 0; i < rowCount; i++)
{
    for (int j = 0; j < colCount; j++)
    {
        sortedNumbers[i, j] = rows[i][j];
    }
}

// 打印验证结果
for (int i = 0; i < rowCount; i++)
{
    Console.WriteLine($"{{{string.Join(", ", rows[i])}}}");
}
// 输出结果:
// {-1, 0, 2}
// {-1, 3, 5}
// {2, 3, 5}
// {5, 6, 8}

方法二:LINQ简化方案(列数固定时使用)

如果数组列数固定,可以用OrderBy+ThenBy链式调用简化排序逻辑:

int[,] numbers = new int[4,3] { { -1,3,5 }, {5,6,8 },{-1,0,2},{2,3,5} };
int rowCount = numbers.GetLength(0);
int colCount = numbers.GetLength(1);

// 提取行并排序
var sortedRows = Enumerable.Range(0, rowCount)
    .Select(i => Enumerable.Range(0, colCount).Select(j => numbers[i, j]).ToArray())
    .OrderBy(row => row[0])
    .ThenBy(row => row[1])
    .ThenBy(row => row[2])
    .ToArray();

// 转换回多维数组
int[,] sortedNumbers = new int[rowCount, colCount];
for (int i = 0; i < rowCount; i++)
{
    for (int j = 0; j < colCount; j++)
    {
        sortedNumbers[i, j] = sortedRows[i][j];
    }
}

注意事项

  • 若数组列数不固定,优先使用自定义比较器方案,避免硬编码多个ThenBy
  • 上述代码均生成新的排序数组,不会修改原多维数组
  • 如果你本身使用的是交错数组(int[][]),可直接跳过数组格式转换步骤,直接排序

内容的提问来源于stack exchange,提问作者user3921104

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:55:20