C# 什么样的查询可以创建奥运会排名(金牌、银牌、铜牌)?

C# 什么样的查询可以创建奥运会排名(金牌、银牌、铜牌)?,c#,mysql,asp.net,linq,C#,Mysql,Asp.net,Linq,我想做一个奥运奖牌排名。 现在我有一个数据透视表,它有一个CountryID、MatchID和奖牌列。 奖牌栏中存储的值为1(金)、2(银)和3(铜) 金牌最多的国家应该是排名最高的国家,其次是银牌最多的国家等等。唯一的问题是,当金牌相等时,银牌的数量应该考虑在内,当然,如果这也是相等的,那么就比较铜牌 目前,我采取以下(不成功)方法: 首先,我提出3个类似这样的问题,以了解每个国家的奖牌数量: var resGold = context.olympics_landen_wedstrijd.Wh

我想做一个奥运奖牌排名。 现在我有一个数据透视表,它有一个CountryID、MatchID和奖牌列。 奖牌栏中存储的值为1(金)、2(银)和3(铜)

金牌最多的国家应该是排名最高的国家,其次是银牌最多的国家等等。唯一的问题是,当金牌相等时,银牌的数量应该考虑在内,当然,如果这也是相等的,那么就比较铜牌

目前,我采取以下(不成功)方法: 首先,我提出3个类似这样的问题,以了解每个国家的奖牌数量:

var resGold = context.olympics_landen_wedstrijd.Where(n => n.medal ==   1).GroupBy(n => n.LandID).Select(g => new { g.Key, Count = g.Count(), Medal = 2 }).OrderByDescending(n => n.Count); 
然后我将resGold、resilver和resBrass合并到一个列表中。我再次查询该列表,以获得黄金最多的国家排名更高的排名

var list = all.OrderBy(t => t.Medal == 1 ? 1 : (t.Medal == 2 ? 2 : t.Medal == 3 ? 3 : 4)).ToList();
问题是,我最终得到了一个国家排名不止一次的列表。当德国和美国都获得了10枚金牌,同时也获得了银牌时,这两个国家在排行榜上又创造了一项纪录

我如何通过数据库设置获得符合奥运会标准的排名

我希望创建的结果是:

[RANK 1]CountryID=2,numberofGold=10,numberofSilver=3,numberOfBrass=5
[RANK 2]CountryID=3,numberofGold=10,numberofSilver=9,numberOfBrass=9
[RANK 3]CountryID=4,numberofGold=9,numberofSilver=10,numberOfBrass=10


提前谢谢

您可以根据加权排名计算每个国家的得分

比率可以是金:银:布朗兹=5:3:1

您可以根据分数描述对国家/地区进行排序

复习


这已经是一个数据透视表。评估可以基于分数gold:silver:bronz=5:3:1(加权排名),回顾Wow nice,不知道这样做!救了我一天!:)欢迎很高兴解决了这个问题。