2013-10-25 29 views
-1

我有一個DataTable,其中有貨幣對現場和其他列如下 enter image description here如何修改一列和一個數據表複製到另一個數據表

我嘗試以下辦法來實現這個

private void CopyColumns(DataTable source, DataTable dest, params string[] columns) 
    { 
     foreach (DataRow sourcerow in source.Rows) 
     { 
      DataRow destRow = dest.NewRow(); 
      foreach (string colname in columns) 
      { 
       destRow[colname] = sourcerow[colname]; 
      } 
      dest.Rows.Add(destRow); 
     } 
    } 

是否可以使用select和Insert查詢將一個DataTable複製到另一個DataTable?

+1

_「using select and Insert query」_你是指'LINQ-To-DataSet'嗎?你的方法非常清晰和高效,不需要使用LINQ。更重要的是因爲LINQ是_query_-而不是_update_-工具。 –

+0

是的,使用LINQ – Ullan

+0

看着你的屏幕截圖,從源錶轉換到目標表的規則是什麼? –

回答

1
private void CopyColumns(DataTable source, DataTable dest, params string[] columns) 
{ 
    dest = source.AsEnumerable() 
       .Select(row=> { 
        DataRow newRow = dest.NewRow(); 
        newRow[columns[0]] = ((string)row[columns[0]]) 
             .Replace("USD","").Trim('/');      
        for(int i = 1; i < columns.Length; i++) { 
        newRow[columns[i]] = row[columns[i]]; 
        } 
        return newRow; 
       }).CopyToDataTable(); 
} 
+0

我建議將select內部移動到其自己的方法中。 – Magus

+0

@AlexBeisley你是什麼意思?你的意思是把內部的東西放入**單獨的方法**中?爲了方便,我只是想寫這樣的。不要害怕所謂的「副作用」,這種問題可能不適用於「LINQ-to-Entity」,但對於「LINQ-to-Dataset」,我認爲不重要。 LINQ'的本質仍然是基於'loop'。 –

+0

這是一個選擇,所以我知道不會有一個真正的副作用,但我的意思是清晰的問題。在select中創建一個複雜的委託相當混亂。 – Magus

相關問題