如何根据总数计算学生排名,如果重复总次数两次,则排名应相同

时间:2016-11-21 10:33:06

标签: c# asp.net ranking

这是我试过的:

  DataTable dt = new DataTable();
  dt.DefaultView.Sort = "ratio DESC";
  dt.Columns.Add(new DataColumn("Rank", typeof(int)));
  int count = 1;

  foreach (DataRowView dr in dt.DefaultView)
    {
      dr["Rank"] = count++;
    }

我在循环时应检查一些情况,任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

循环时需要访问上一行值。使用传统的for循环。小心第一个记录,因为它会有前一行。

for( int i = 0; i < dt.DefaultView.Rows.Count; i++ )
{
    if( i > 0 )
    {
       // Compare with previous row using index
       if( dt.DefaultView.Rows[i]["ratio"] == dt.DefaultView.Rows[i-1]["ratio"])
       {
           dt.DefaultView.Rows[i]["Rank"] = count;
       }
      else
      {
          dt.DefaultView.Rows[i]["Rank"] = count++;
      }
    }
   else
   {
       dt.DefaultView.Rows[i]["Rank"] = count;
   } 

}