如何根据总分计算学生排名,如果总分重复两次,那么排名应该相同
How to Calculate students Rank based on the Total, If the Total amount repeated twice then the rank should be same
这是我尝试过的:
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++;
}
当我循环时它应该检查一些条件,有人可以帮助我吗?
您需要在循环时访问上一行的值。使用传统的 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;
}
}
这是我尝试过的:
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++;
}
当我循环时它应该检查一些条件,有人可以帮助我吗?
您需要在循环时访问上一行的值。使用传统的 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;
}
}