我有一個排序字典,名稱為鍵,標記為值。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 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消