为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕勒3428872 2022-01-09 14:54:54
我有一个排序字典,名称为键,标记为值。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 };


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信