我如何给相同等级的学生分数?
本文关键字: | 更新日期: 2023-09-27 17:54:03
这是我目前拥有的代码,当学生的分数相同时,他们会得到不同的排名这不是我想要的
class Program
{
static void Main(string[] args)
{
using (var db = new SchoolEntities())
{
int rank= 0;
var query = db.ScoreSummaries
.OrderByDescending(x => x.TotalScore).ToList();
foreach (var item in query)
{
rank+= 1;
Console.WriteLine("{0},{1},{2}", item.TransactionID, item.TotalScore, rank);
}
Console.WriteLine("Pls press any key to exit");
Console.ReadKey();
}
}
我的结果如下,注意前两个记录是相同的,但有不同的排名。我希望两条记录的秩都是1,下一条记录的秩是3。如有任何建议,不胜感激
TRANS01,92,1
TRANS01,92,2
TRANS01,88,3
TRANS01,85,4
TRANS01,79,5
Pls press any key to exit
试试这样
int rank= 0;
int lastScore = 0;
var query = db.ScoreSummaries
.OrderByDescending(x => x.TotalScore).ToList();
foreach (var item in query)
{
if (lastScore > item.TotalScore)
rank++;
lastScore = item.TotalScore;
Console.WriteLine("{0},{1},{2}", item.TransactionID, item.TotalScore, rank);
}
我的做法是。保存当前分数到新变量
static void Main(string[] args)
{
using (var
db = new SchoolEntities())
{
double currentScore = 0;
int rank= 0;
int savedRank;
var query = db.ScoreSummaries
.OrderByDescending(x => x.TotalScore).ToList();
foreach (var item in query)
{
rank+= 1;
if(item.TotalScore == current score)
{
savedRank = savedRank
}
else
{
savedrank = rank;
}
Console.WriteLine("{0},{1},{2}", item.TransactionID, item.TotalScore, savedrank);
currentScore = item.totalScore;
}
Console.WriteLine("Pls press any key to exit");
Console.ReadKey();
}
}
我假设这是某个类的赋值。
您正在尝试跟踪学生的当前排名,以及您已经通过的学生总数。要做到这一点,您需要在每个变量中跟踪它们,并在适当的时候修改它们。
你通过的学生数量每次都可以增加,就像你的排名变量目前是;变量current_rank需要单独递增(可能基于前一个学生的成绩,提示,提示)。