c# - 根据另一个列表对列表进行排序
问题描述
我有一个list1
这样的:
{A,B,C,D,E,F}
我有另一个list2
countlist2
等于list1
count (6=6) :
{50,100,14,57,48,94}
我想list1
根据list2
,list2
按升序排序。
{14,48,50,57,94,100}
因此 :
{C,E,A,D,F,B}
我使用了以下代码。但是结果没有排序
list1= list1.OrderBy(d => list2.IndexOf(d)).ToList();
解决方案
为什么不使用排序字典?
var list1 = new List<int> { 50, 100, 14, 57, 48, 94 }
var list2 = new List<string> { "A", "B", "C", "D", "E", "F" };
var dict = new SortedDictionary<int, string>();
for (int i = 0; i < list1.Count; i++)
{
dict.Add(list1[i], list2[i]);
}
您现在将能够以正确的顺序访问这些值。
推荐阅读
- eclipse - 在 Eclipse 2020-03 中使用 Jira Mylyn 连接器?
- java - 如何在 Java 中的 showInputDialog 中为输入添加限制
- json - 在forEach里面访问mongodb中的查询字段
- javascript - 如何打开列表内的不同模式?
- visual-studio - Visual Studio 2017 实例未打开
- join - 使用最大重叠区域连接 sfc 对象并分配分类属性
- flutter - 如何在列内添加包装未来构建器
- excel - 为什么运行此宏一年多后,我不能突然引用工作表名称?
- python - 测试一个数字是否在 1000 或 2000 的 100 以内
- html - 音频自动播放在谷歌浏览器中不起作用