两个列表排序一个通过降序但受约束升序另一个

时间:2011-05-13 12:21:21

标签: c# .net list sorting

得到了非常基本的问题: 我需要在C#中实现它。 我有两个列表Say List1和List2

清单1 23,34,45,12,34,34,67,100,34

清单2 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) 因此输出应该是第一个34对应于0.3,然后是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

1 个答案:

答案 0 :(得分:8)

看起来像:

var result = list1.Zip(list2, (x, y) => new { x, y })
                  .OrderByDescending(z => z.x)
                  .ThenByDescending(z => z.y);

结果将是一个匿名类型的序列,其中x对应list1中的值,y对应list2中的值,以及整个事物在x然后y上按降序排序。