比较排序字典中的一个值与下一个值

时间:2018-09-08 14:29:52

标签: c#

我有一个排序的字典,名称作为键,标记为值。

Dictionary<string,int> diM = new Dictionary<string,int>();

另一本字典,用于存储各自学生花费的时间。

Dictionary<string,int> diT = new Dictionary<string,int>();

现在,如果两个学生的分数相同,则根据所花费的时间进行排名。

var marks = from pair in diM
            orderby pair.Value descending
            select pair;
int j=0;

foreach (KeyValuePair<string, int> pair in marks)
{
    j++;
    Console.WriteLine("{0} {1}",j, pair.Key);
}

现在,如果一个学生成绩与下一个学生成绩相同(按字​​典排序),则应输出时间较少的学生。

1 个答案:

答案 0 :(得分:1)

首先,建议您不要为此任务使用词典。创建一个具有名称,标记和时间属性的类。像这样:

[declarations]

然后保存该类型的列表。每当您有两个单独的集合时,无论如何都需要保持同步-怀疑设计中可能有问题。


对于实际问题,使用Linq通过键将两个字典连接在一起。完成后,您可以按标记,然后按时间对结果进行排序:

public class TestResult
{
    public string Name { get; set; }
    public int Grade { get; set; }
    public TimeSpan Time { get; set; }
}