如何给予同等级别的学生分数

时间:2014-03-26 13:35:22

标签: c# performance linq-to-entities

这是我目前所拥有的代码,只是当学生得分相同时,他们会得到不同的等级而不是我想要的

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

3 个答案:

答案 0 :(得分:3)

尝试这样的事情

        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);
        }

答案 1 :(得分:0)

我会这样做的方式。将当前分数保存到新变量

 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();
        }
    }

答案 2 :(得分:0)

我会假设这是某个班级的作业。

您正在尝试跟踪学生的当前排名,以及您经历过的学生总数。为此,您需要在自己的变量中跟踪每个变量,并在适当的时间修改它们。

您经历过的学生人数每次都会增加,就像您目前的排名变量一样; current_rank变量需要与其分开递增(可能基于之前学生的成绩,提示,提示)。