按其等级排序字符串列表

时间:2013-09-24 11:48:04

标签: c#

给出

List<string> s=new List<string>{"a","b","c"}
and 
List<double> srank=new List<double>{2,3,1}

我希望ssrank的数量按降序排序,即排序后

s={"b","a","c"}

最简单的方法是什么?

2 个答案:

答案 0 :(得分:9)

试试这个

   var sorted = s
      .Zip(srank, (x,y) => new { s = x, rank = y })
      .OrderByDescending(x => x.rank)
      .Select(x => x.s)
      .ToList();

详细了解Zip

详细了解OrderByDescending

编辑:

使用数组有一个非常简短的解决方案: 如果ssrank是数组,我们可以这样做:

Array.Sort(srank,s);

答案 1 :(得分:1)

如果我是你,我会使用List<Tuple> Dictionary或创建一个新的class然后再做

var dictionary = new Dictionary<string, double>
{
    { "a", 2 },
    { "b", 3 },
    { "c", 1 }
};

var result = dictionary.OrderByDescending(d => d.Value).Select(d => d.Key);