2014-05-19 2 views
-1

Im la recherche d'un moyen d'atteindre les objectifs suivants:Sélectionnez la valeur MAX d'utilisateur spécifique sur Datatable

J'ai un datatable:

 
ID Custommer Value 
1  Client 1  10 
2  Client 2  20 
3  Client 3  30 
1  Client 1  11 
2  Client 2  21 
3  Client 3  31 

je dois sélectionner la valeur maximale de la colonne « Valeur » d'un id "id" spécifique

Ex .: valeur maximale du client 1

doit retourner: 1 Client 1 11

Mais en utilisant ce code:

dVipArchiveClientSelectd = dVipArchive 
    .Select(id + "= 1" + " AND " + value + " = MAX(" + value + ")"); } 

Il ne retourne pas. Il y a un moyen d'y parvenir en utilisant des données et sélectionnez?

+0

est-dvipArchive une instance DataTable? – Steve

+0

Vous devez ajouter un groupby sur custommer. – Hatsjoem

+0

Oui Steve c'est. – ddmunhoz

Répondre

0

Créer un IEnumerable avec le groupe par l'ID d'un champ Client, puis appliquer le MAX au champ Valeur

var g = from t in dVipArchive.AsEnumerable() 
    group t by new {id = t["ID"], cust=t["Customer"]} 
    into grp 
    select new 
    { 
     grp.Key.id, 
     grp.Key.cust, 
     maxV = grp.Max(z => z["Value"]) 
    }; 

Maintenant, vous avez toutes les lignes avec la valeur maximale pour chaque ID (et client)
Il suffit d'appliquer une WHERE pour extraire la ligne que vous êtes intéressé à

var row = g.Where (x => Convert.ToInt32(x.id) == 1).Single(); 
Console.WriteLine("ID=" + row.id.ToString()); 
Console.WriteLine("Customer=" + row.cust); 
Console.WriteLine("MaxValue=" + row.maxV); 

Je ne suis pas sûr que ce soit mieux que d'exécuter directement une commande SQL comme

SELECT ID, Customer, Max(VALUE) 
FROM Customers 
WHERE [email protected] 
GROUP BY ID, Customer 
0

SELECT MAX (valeur) DE yourtable WHERE id = 1, je sais pas si était-ce ce que tu voulais

MISE À JOUR

string maxvalue = dt.AsEnumerable() 

     .Max(row => row["Value"]) 
     .WHERE (//logic) 

     .ToString(); 

espère que cela peut aider u

+0

vous ne pouvez pas le faire sur C# DataTable – ddmunhoz

+0

jeter un oeil à mon édition, j'espère que ça peut vous aider! – user3584562

Questions connexes