有一个非常基本的问题:
我需要在 C# 中实现它。
我有两个列表说 List1 和 List2
List1 23,34,45,12,34,34,67,100,34
List2 0.1,0.3,0.1,0.2,0.15,0.17,0.91,0.81,0.3
如您所见,list1 中有重复的数据点(在本例中为 34 个)
我必须在 List2 上按降序对 List1 进行排序,这样如果 List1(34) 中有重复的条目,则从 List2 中取最高的相应值(这里 34 有 0.3、0.3、0.17 和 0.15)
所以输出应该是第一个对应 0.3 的 34,然后到 0.3,然后到 0.17,然后到 0.15
List1 100,67,45,34,34,34,34,23,12
List2 0.81,0.91,0.1,0.3,0.3,0.17,0.15,0.1,0.2
最佳答案
看起来像:
var result = list1.Zip(list2, (x, y) => new { x, y })
.OrderByDescending(z => z.x)
.ThenByDescending(z => z.y);
结果将是一个匿名类型的序列,其中
x
对应于 list1
中的值, y
对应于 list2
中的值, 整个事情在 x
上按降序排列然后 y
.
关于c# - 两个列表按升序排序另一个按降序但受约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5991728/