我正在为我编写的局域网方网站构建一个插件,允许使用Round Robin锦标赛.
一切进展顺利,但我有一些关于排名超过两个标准的最有效方法的问题.
基本上,我想要以下排名布局:
Rank Wins TotalScore
PersonE 1 5 50
PersonD 2 3.5 37
PersonA 2 3.5 37
PersonC 4 2.5 26
PersonB 5 2.5 24
PersonF 6 0 12
Run Code Online (Sandbox Code Playgroud)
在SQL服务器中,我会使用:
SELECT
[Person],
RANK() OVER (ORDER BY Wins DESC, TotalScore DESC) [Rank],
[Wins],
[TotalScore]
Run Code Online (Sandbox Code Playgroud)
现在,我只有List,Dictionary等可以使用
特别:
Dictionary<TournamentTeam, double> wins = new Dictionary<TournamentTeam, double>();
Dictionary<TournamentTeam, double> score = new Dictionary<TournamentTeam, double>();
Run Code Online (Sandbox Code Playgroud)
有没有办法用LINQ做这种排名风格?
如果没有,是否有一种可扩展的方式可以让我以后考虑Win-Loss-Draw而不仅仅是胜利,如果我选择的话?
编辑:
我改编了TheSoftwareJedi的答案:
private class RRWinRecord : IComparable
{
public int Wins { get; set; } …Run Code Online (Sandbox Code Playgroud)