2016-11-21 67 views
1

這裏是我的嘗試:如何基於總計算學生排名,如果總量重複兩次,則排名應該是相同的

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

雖然我循環應該檢查一些條件,可以在任何一個幫我 ?

+0

請說明您的具體問題或添加其他詳細信息,以確切地突出顯示您的需求。正如目前所寫,很難確切地說出你在問什麼。請參閱「如何問問」頁面以獲取有關澄清此問題的幫助。 – mybirthname

+0

考慮添加一個可重複的例子 – timat

+0

@mybirthname感謝您的回覆,在這裏我有一組學生記錄在數據表中,我喜歡根據總數計算出學生的排名。我使用「desc」作爲我的數據表,以降低數量以獲得更高的數量。然後我循環記錄生成排名。在這裏我的問題是「如果總金額存在兩次,那麼兩個總記錄應該是相同的」 –

回答

0

循環時需要訪問前一行的值。去傳統的循環。因爲會有前一行,因此請小心第一條記錄。

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

} 
+0

感謝您的回覆。這是一個正在尋找和思考的東西......非常感謝 –

+0

WC :)。 PLZ標記它打勾並upvote,這就是我們如何表示感謝在SO。 –