2012-10-10 44 views
1

我有數據表1:-----------------------------應該是這樣的:如何替換數據表中的重複項

ID Name Lastname    ID  Name Lastname 
-------------------    ----------------------- 
1 | koki ha     1 | koki  ha 
-------------------     | ----------------- //merge Rows[0][0]   
1 | lola mi      | lola  mi  //with Rows[1][0] if the same 
-------------------    -----------------------      
2 | ka xe     2  ka  xe 

如何將「1」替換爲「」或空如果已經存在?我花了2個小時,但找不到解決方案。我試過用linq,但沒有找到正確的關鍵,也許是不同的或組?

DataTable table = new DataTable("table"); 
table.Columns.Add("ID", typeof(Int32)); 
table.Columns.Add("Name", typeof(String)); 
table.Columns.Add("Lastname", typeof(String)); 

object[] o1 = { 1, "Kiki", "ha"}; 
     object[] o2 = { 1,"lola","mi"}; 
     object[] o4 = { 2, "ka", "xe" }; 
table.Rows.Add(o1); 
     table.Rows.Add(o2); 
     table.Rows.Add(o4); 
dataGridView2.DataSource = table; 
+1

問題是,你想這個時候做?你已經有重複的數據? – Andrey

+1

[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

是的,我已經有重複的數據,現在我想替換它,或者刪除它 –

回答

1

這裏是如何使用LINQ做到這一點:

var dataRows = table.Rows.Cast<System.Data.DataRow>() 
         .GroupBy(r => r[0]) 
         .Where(g => g.Count() > 1); 

foreach (var dataRowGroup in dataRows) { 
    int idx = 0; 
    foreach (DataRow row in dataRowGroup) { 
     if (idx++ > 0) { 
      row[0] = DBNull.Value; 
     } 
    } 
} 
+0

我試過你的代碼,但它會拋出一個帶有標題頭的表格而沒有更多 –

+0

@UniLe那麼你的示例代碼不代表你的實際代碼;當我使用你的代碼創建一個DataTable和我的代碼來更新它時,我會得到你說你需要的前後結果。我相信我們可以做你需要使用LINQ的東西,但是現在找到解決方案並不重要。 –

+0

無論如何,謝謝你,你是上師:)最好的問候 –