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

C#中如何按速度从高到低关联排序汽车与速度数组?

按速度降序排列对应数组的C#实现

你提供的示例里,speeds数组中Ford对应的速度是200,但期望结果里写的是300,应该是笔误。下面的代码会基于你给出的原始数组(speeds = {150,130,200,110})实现排序,得到对应降序后的结果。

在C#中,最稳妥的做法是先将汽车和对应的速度配对,排序后再拆分回两个数组,避免单独操作两个数组导致元素对应关系错乱。具体实现步骤如下:

  • 将两个数组的元素按索引一一配对,生成包含汽车和速度的序列
  • 按速度从高到低对该序列排序
  • 分别提取排序后的汽车名称和速度,生成新的数组

完整代码示例:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
        int[] speeds = {150, 130, 200, 110};

        // 配对汽车与速度,按速度降序排序
        var sortedPairs = cars.Zip(speeds, (car, speed) => new { Car = car, Speed = speed })
                              .OrderByDescending(pair => pair.Speed);

        // 提取排序后的汽车数组
        string[] sortedCars = sortedPairs.Select(pair => pair.Car).ToArray();
        // 提取排序后的速度数组
        int[] sortedSpeeds = sortedPairs.Select(pair => pair.Speed).ToArray();

        // 输出验证结果
        Console.WriteLine("排序后的汽车数组:");
        foreach (var car in sortedCars) Console.WriteLine(car);

        Console.WriteLine("\n排序后的速度数组:");
        foreach (var speed in sortedSpeeds) Console.WriteLine(speed);
    }
}

代码说明:

  • Zip方法用于将两个数组的元素按索引一一配对,生成包含Car和Speed的匿名类型序列
  • OrderByDescending方法实现按速度降序排序整个序列
  • 最后通过Select分别提取汽车和速度字段,再用ToArray()转换为目标数组

运行代码后得到的结果:

  • sortedCars:{"Ford", "Volvo", "BMW", "Mazda"}
  • sortedSpeeds:{200, 150, 130, 110}

如果你确实需要Ford的速度为300,只需修改原始speeds数组中对应位置的值即可,代码逻辑无需调整。

内容的提问来源于stack exchange,提问作者gold recovery sayf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:32:36