2014-07-10 41 views
0

我有一個數據表,說「DTEMP」參考鍵,與列[EmployeeID][CompanyID][CompanyName] 和另一個說「dtCompany」的列[CompanyID][CompanyName]更新一個DataTable從另一個數據表

我想更新「DTEMP」與各自的公司名稱在列[CompanyName]

舒適指南。我試圖尋找這一點,但我無法找到確切的詞來搜索:(

+0

在兩個表上的'CompanyId'上使用連接。 –

+0

謝謝。加入返回結合結果。我不知道如何**更新數據庫dtEmp。我是否需要再次迭代或有更好的方法 – quitprog

+0

閱讀我的答案。 –

回答

0

如何

for(int i = 0; i < dtCompany.Rows.Count; i++) 
{ 
    for(int j = 0 ; j < dtEmp.Rows.Count ; j++) 
    { 
     if (Convert.ToString(dtCompany.Rows[i]["CompanyID"]) == 
      Convert.ToString(dtEmp.Rows[j]["CompanyID"])) 
     { 
      dtEmp.Rows[j]["CompanyName"] = 
      Convert.ToString(dtCompany.Rows[i]["CompanyName"]); 
     }     
    } 
} 
+0

是@Nikhil。我懂了。我認爲linq/inner join可能會有更好的方式。或者,也許我正在想:P – quitprog

+0

@parixit:等等,讓我看看。 –

+0

您無法使用Linq更新'DataTable'。 –

0
var result = (from t1 in dtEmp 
join t2 in dtCompany on t1.CompanyID equals t2.CompanyID 
select new { t1.EmployeeID, t1.CompanyID, t2.CompanyName}).ToList() 

我不知道您的長期目的是爲了更新數據表中的東西,但是使用的東西像這樣會爲你提供一個匿名對象的列表,它將包含你需要的3個字段,你可能很難將它們強制轉換爲強類型的Datarows,然後在每行創建一個全新的表格(或者更新現有的表格)

0

Linq本身不能更新。
假設類型的DataTable,只需:

foreach(var rowEmp in dtEmp) 
{ 
    var rowComp = dtCompany 
        .Where(r => r.CompanyID == rowEmp.CompanyID) 
        .FirstOrDefault(); 
    if(rowComp == null) 
     rowEmp.SetCompanyNameNull(); 
    else 
     rowEmp.CompanyName = rowComp.CompanyName; 
} 

(忽略具有零或DBNull的內容的情況下,做空檢查是否需要請。)

類似的邏輯是適用於一般數據表。