2013-02-08 2 views
0

J'ai un code existant qui fonctionne très bien et il trouve la valeur maximale d'une colonne de données dans la table de données. Maintenant, je voudrais affiner cela et trouver la valeur maximale par empid. Quel changement serait nécessaire? Je ne veux pas utiliser LINQ.Regrouper par et trouver la valeur MAx dans une lignes DataTable

Je suis en train d'utiliser ceci: memberSelectedTiers.Select ("Insert_Date = MAX (Insert_Date)") et j'ai besoin de le grouper par Empid.

Mon code est le suivant.

 DataTable memberApprovedTiers = GetSupplierAssignedTiersAsTable(this.Customer_ID, this.Contract_ID); 

     //get row with maximum Insert_Date in memberSelectedTiers 
     DataRow msRow = null; 
     if (memberSelectedTiers != null && memberSelectedTiers.Rows != null && memberSelectedTiers.Rows.Count > 0) 
     { 
      DataRow[] msRows = memberSelectedTiers.Select("Insert_Date = MAX(Insert_Date)"); 
      if (msRows != null && msRows.Length > 0) 
      { 
       msRow = msRows[0]; 
      } 
     } 

Répondre

1

Vous pouvez utiliser LINQ pour cela. Je pense que ce qui suit fonctionnera (ne pas tester VS):

var grouped = memberSelectedTiers.AsEnumerable() 
           .GroupBy(r => r.Field<int>("EmpId")) 
           .Select(grp => 
            new { 
             EmpId = grp.Key 
             , MaxDate = grp.Max(e => e.Field<DateTime>("Insert_Date")) 
            }); 
0

Daniel Kelley, votre réponse m'a aidé et ce qui est génial, mais avez-vous remarqué l'OP a déclaré qu'il ne voulait pas utiliser LINQ?

+0

Ceci ne fournit pas de réponse à la question. Une fois que vous avez suffisamment [réputation] (https://stackoverflow.com/help/whats-reputation) vous pourrez [commenter n'importe quel article] (https://stackoverflow.com/help/privileges/comment); Au lieu de cela, [fournissez des réponses qui ne nécessitent pas de précisions de la part du demandeur] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- je-fais-à la place). –

Questions connexes