我有一个排序的字典,名称作为键,标记为值。
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);
}
现在,如果一个学生成绩与下一个学生成绩相同(按字典排序),则应输出时间较少的学生。
答案 0 :(得分:1)
首先,建议您不要为此任务使用词典。创建一个具有名称,标记和时间属性的类。像这样:
[declarations]
然后保存该类型的列表。每当您有两个单独的集合时,无论如何都需要保持同步-怀疑设计中可能有问题。
对于实际问题,使用Linq通过键将两个字典连接在一起。完成后,您可以按标记,然后按时间对结果进行排序:
public class TestResult
{
public string Name { get; set; }
public int Grade { get; set; }
public TimeSpan Time { get; set; }
}