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

如何在C#中按指定ID顺序对ResultOutcome数组排序

按指定ID顺序重新排列ResultOutcome数组

核心思路

用字典构建ID到数组元素的快速映射,再按指定顺序遍历ID列表,直接从字典中取出对应元素生成有序数组,效率远高于常规排序方案。

实现代码

首先构建索引字典(将原数组的string类型ID转为int,匹配排序规则的类型):

var outcome = Result.ToArray();
int[] requiredOrder = new int[5] {3,5,2,1,4};

// 构建ID与ResultOutcome的映射字典
var outcomeDict = outcome.ToDictionary(item => int.Parse(item.id), item => item);

然后按照指定顺序生成新数组:

// 生成有序数组,自动过滤原数组中不存在的ID
var orderedOutcomes = requiredOrder
    .Select(id => outcomeDict.TryGetValue(id, out var item) ? item : null)
    .Where(item => item != null)
    .ToArray();

细节说明

  1. 容错处理:如果不确定requiredOrder中的ID都存在于原数组,用TryGetValue避免抛出KeyNotFoundException,并通过Where过滤无效项;若能确保ID全匹配,可简化为:
    var orderedOutcomes = requiredOrder.Select(id => outcomeDict[id]).ToArray();
    
  2. ID类型转换:原数组的ID是string类型,需确保能正常转为int,否则要提前做格式校验(比如用int.TryParse捕获转换失败的情况)。
  3. 性能优势:字典查找时间复杂度为O(1),整体过程时间复杂度为O(n),比基于排序的O(n log n)方案更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:05:57