给出
List<string> s=new List<string>{"a","b","c"}
and
List<double> srank=new List<double>{2,3,1}
我希望s
按srank
的数量按降序排序,即排序后
s={"b","a","c"}
最简单的方法是什么?
答案 0 :(得分:9)
试试这个
var sorted = s
.Zip(srank, (x,y) => new { s = x, rank = y })
.OrderByDescending(x => x.rank)
.Select(x => x.s)
.ToList();
详细了解Zip
编辑:
使用数组有一个非常简短的解决方案:
如果s
和srank
是数组,我们可以这样做:
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);