2016-11-21 1 views
1

Voici ce que j'ai essayé:Comment calculer les étudiants Classement en fonction du total, si le montant total répété deux fois, puis le rang doit être identique à

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

Alors que je bouclant doit vérifier une condition, peut-on Aidez moi ?

+0

Veuillez clarifier votre problème spécifique ou ajouter des détails supplémentaires pour mettre en évidence exactement ce dont vous avez besoin. Comme c'est écrit actuellement, il est difficile de dire exactement ce que vous demandez. Voir la page Comment demander pour obtenir de l'aide pour clarifier cette question. – mybirthname

+0

Envisager d'ajouter un exemple reproductible – timat

+0

@mybirthname Merci pour votre réponse, Ici, j'ai un ensemble d'étudiants enregistrer dans le tableau de données, je tiens à calculer le rang pour les étudiants, basé sur le total. J'ai utilisé "desc" pour mon datatable à descendre le montant coloumn pour obtenir un montant plus élevé dans la rangée supérieure. alors je boucle les disques pour générer le rang. Voici mon problème est "Si le montant total existe deux fois, alors les deux enregistrements totaux devraient être les mêmes" –

Répondre

0

Vous devez accéder à la valeur de ligne précédente pendant la boucle. Aller avec traditionnel pour la boucle. Soyez prudent pour le premier enregistrement car il y aura la ligne précédente pour cela.

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

Merci pour la réponse. C'est ce que je cherche et pense ... merci beaucoup –

+0

WC :). Plz marque il tick et upvote, c'est ainsi que nous disons merci à SO. –