我有一个数据表,说' dtEmp',列[EmployeeID][CompanyID][CompanyName]
另一个人说'dtCompany'列[CompanyID][CompanyName]
我想更新' dtEmp'在[CompanyName]
列
很好的指南。我试着搜索这个,但我找不到确切的搜索词:(
答案 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"]);
}
}
}
答案 1 :(得分: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,然后为每行创建一个全新的表(或更新现有的表)。
答案 2 :(得分: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;
}
(忽略具有null或DBNull的内容的情况,请在需要时进行空检查。)
类似的逻辑适用于一般的DataTable。