我有一個數據表,說「DTEMP」參考鍵,與列[EmployeeID][CompanyID][CompanyName]
和另一個說「dtCompany」的列[CompanyID][CompanyName]
更新一個DataTable從另一個數據表
我想更新「DTEMP」與各自的公司名稱在列[CompanyName]
舒適指南。我試圖尋找這一點,但我無法找到確切的詞來搜索:(
我有一個數據表,說「DTEMP」參考鍵,與列[EmployeeID][CompanyID][CompanyName]
和另一個說「dtCompany」的列[CompanyID][CompanyName]
更新一個DataTable從另一個數據表
我想更新「DTEMP」與各自的公司名稱在列[CompanyName]
舒適指南。我試圖尋找這一點,但我無法找到確切的詞來搜索:(
如何
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"]);
}
}
}
是@Nikhil。我懂了。我認爲linq/inner join可能會有更好的方式。或者,也許我正在想:P – quitprog
@parixit:等等,讓我看看。 –
您無法使用Linq更新'DataTable'。 –
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,然後在每行創建一個全新的表格(或者更新現有的表格)
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的內容的情況下,做空檢查是否需要請。)
類似的邏輯是適用於一般數據表。
在兩個表上的'CompanyId'上使用連接。 –
謝謝。加入返回結合結果。我不知道如何**更新數據庫dtEmp。我是否需要再次迭代或有更好的方法 – quitprog
閱讀我的答案。 –