2014-05-19 392 views
-1

林特定用戶尋找一種方法的最大價值,實現以下目標:選擇在數據表

我有一個數據表:

 
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 

我需要選擇一個的列「值」最大值特定ID 「ID」

客戶端的例子:最大值1

應該返回:1 Client 1 11

但使用此代碼:

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

它無法返回。有一種方法可以使用數據表來實現這一點,並選擇?

+0

是dvipArchive一個DataTable實例? – Steve

+0

您應該在custommer上添加groupby。 – Hatsjoem

+0

是的,史蒂夫。 – ddmunhoz

回答

0

通過ID創建一個IEnumerable與組客戶字段,然後應用MAX的值字段

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"]) 
    }; 

現在你把所有的與每個ID(和客戶)的最大值的行
簡單地套用一個WHERE到你感興趣的行提取到

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

我不知道這是不是像

直接執行SQL命令更好
SELECT ID, Customer, Max(VALUE) 
FROM Customers 
WHERE [email protected] 
GROUP BY ID, Customer 
0

SELECT MAX(值)yourtable WHERE ID = 1,說不上來,如果是這樣的東西u想

UPDATE

string maxvalue = dt.AsEnumerable() 

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

     .ToString(); 

希望這可以幫助ü

+0

你不能那樣做C#DataTable – ddmunhoz

+0

看看我的編輯,希望它能幫助你! – user3584562