我有
List<string> strs;
double[] values;
其中 values 数组包含 strs 列表中每个字符串的值
说 strs={"abc","def","ghi"}
和 values={3,1,2}
这意味着“abc”的值为 3,依此类推。
我希望对按值排序的 strs 和值进行排序,这样它就变成了
strs={"def","ghi","abc"}
values={3,2,1}
我正在使用
string[] strsArr = strs.ToArray();
Array.Sort(values, strsArr);//1. sort it ascendingly
strs = strsArr.ToList();
Array.Reverse(strs);//2. reverse it
有没有一种方法可以直接按降序排序而不需要 2 个阶段?
最佳答案
您可以使用字典和 Linq 来解决这个问题。
var dict = new Dictionary<string, double>()
{
{"abc",3},
{"def",1},
{"ghi",2}
};
var sorted = dict.OrderByDescending(g => g.Value)
.Select(g => g.Key)
.ToArray();
请注意,除非您在末尾有一个 ToArray() ,否则排序将被推迟到稍后枚举,并且可能会意外地被枚举多次。
关于c# - 直接降序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811382/