我有一个排序字典,名称为键,标记为值。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 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
首先,我建议不要使用字典来完成这项任务。创建一个具有名称、标记和时间属性的类。就像是:
public class TestResult
{
public string Name { get; set; }
public int Grade { get; set; }
public TimeSpan Time { get; set; }
}
然后持有该类型的列表。每当您有两个单独的集合时,您需要以某种方式保持同步 - 怀疑设计中可能存在问题。
至于实际问题,使用Linq将两个字典按键连接起来。完成此操作后,您可以按标记排序结果,然后按时间排序:
var result = from mark in diM
join time in diT on mark.Key equals time.Key
orderby mark.Value descending, time.Value
select new { Name = mark.Key, Grade = mark.Value, Time = time.Value };
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消