如何对List1(int)进行排序,以便对相应的List2(字符串)也进行排序?

时间:2019-06-29 20:23:51

标签: c#

我是初学者,需要帮助!!!

我有2个具有相同项目数的列表:

serializer.ContractResolver = new FieldsOnlyResolver();

我想按相应的名称按降序对Score进行排序:

"postbuild": "find ./build -type f -name '*.css' -o -name '*.js' -exec gzip -k '{}' \\;"

最简单,最短的代码解决方案是什么? (Linq ??) 如何打印结果?

谢谢!

我知道如何使用数组: ...但是使用列表,似乎更复杂。

排序(分数,名称)+反向(分数)+反向(名称)

2 个答案:

答案 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降序排列,打印numnames。 / 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

阅读: