我是初学者,需要帮助!!!
我有2个具有相同项目数的列表:
serializer.ContractResolver = new FieldsOnlyResolver();
我想按相应的名称按降序对Score进行排序:
"postbuild": "find ./build -type f -name '*.css' -o -name '*.js' -exec gzip -k '{}' \\;"
最简单,最短的代码解决方案是什么? (Linq ??) 如何打印结果?
谢谢!
我知道如何使用数组: ...但是使用列表,似乎更复杂。
排序(分数,名称)+反向(分数)+反向(名称)
答案 0 :(得分:2)
将它们合并为一个类
public class Score
{
public int Value { get; }
public string Name { get; }
public Score(int value, string name) => (Value, Name) = (value, name);
}
然后排序自然进行
var scores = new List<Score> {}; // create list
var orderedScores = scores.OrderByDescending(score => score.Value).ToList();
您可以使用.Zip
扩展方法从两个列表中创建分数列表
var scores = scoreValues.Zip(scoreNames, (value, name) => new Score(value, name)).ToList();
答案 1 :(得分:0)
将它们全部放入一个匿名类中(不需要为该示例创建完整的类规范),按num
降序排列,打印num
和names
。 / p>
完整示例:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
var nums = new List<int>{523, 125, 428, 625};
var names = new List<string>{"toto", "gaga", "zaza", "dudu"};
// create combined tuples using Select with index, using _Zip_is more elegant
var combined = nums.Select((n, i) => new
{
num = n, name = names[i]
}
).OrderByDescending(tup => tup.num);
foreach (var c in combined)
Console.WriteLine(string.Format("{0} {1}", c.num, c.name));
}
}
输出:
625 dudu
523 toto
428 zaza
125 gaga
阅读: