2015-05-11 89 views
0

這是我的數據表:避免在DataTable中重複列?

ItemPartNumber  VendorName  Price 
ANNF213    SAMSUNG   265.41 
GDFF31D    HP    65.10 
ANNF213    APPLE   115.51 
FSF2122    MICROSOFT  655.47 
GDSGG32    NOKIA   250.58 
ANNF213    SAMSUNG   225.40 

ANNF213三次。我想只取第一個,並希望省略其餘行。

所需的輸出數據表:

ItemPartNumber  VendorName  Price 
ANNF213    SAMSUNG   265.41 
GDFF31D    HP    65.10 
FSF2122    MICROSOFT  655.47 
GDSGG32    NOKIA   250.58 

所以,我的簡單的問題是,如何省略重複特定的列值後得到的行?

我已經試過:

DataView view = new DataView(dataTable); 
dataTable = view.ToTable(true, "ItemPartNumber", "VendorName", "Price"); 
//This isn't working. 

dataTable = view.ToTable(true, "ItemPartNumber"); 
//This is working, but only `ItemPartNumber` is there on data table, but I need all three columns. Help me in this! 
+0

首先根據行號或實際訂單(fe保持最高價格)? –

+0

我對兩人都很好。我能理解你的評論。我被要求省略重複的行,包括重複的零件號碼,現在沒有條件。 –

回答

1

我會使用LINQ到數據表,如果你只是想保持第一:

dataTable = dataTable.AsEnumerable() 
    .GroupBy(row => row.Field<string>("ItemPartNumber")) 
    .Select(grp => grp.First()) 
    .CopyToDataTable(); 

如果你想要的東西更有意義,例如保持最高價格的行:

dataTable = dataTable.AsEnumerable() 
    .GroupBy(row => row.Field<string>("ItemPartNumber")) 
    .Select(grp => grp.OrderByDescending(row => row.Field<decimal>("Price")).First()) 
    .CopyToDataTable();