You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中通过LINQ关联DataTable并更新dtA的实现方法问询

解决方案

可以通过在LINQ查询中关联两个DataTable后,利用ToList().ForEach()的链式调用直接完成字段更新,避免单独编写foreach循环。修改后的代码如下:

(from a in dtA.AsEnumerable()
 join b in dtB.AsEnumerable() on a["accountno"] equals b["acc_no"]
 select new { TargetRow = a, SourceValue = b["fieldB"] })
.ToList()
.ForEach(item => item.TargetRow["fieldA"] = item.SourceValue);

关键说明

  • 原代码仅查询出关联字段,未执行更新操作。这里通过select将需要更新的DataRow(dtA的行)和来源值(dtB的fieldB)封装为匿名类型,确保后续能直接操作目标行。
  • LINQ查询是延迟执行的,调用ToList()会立即枚举所有关联结果,再通过List的ForEach方法遍历每个关联项,完成fieldA的赋值。
  • 如果fieldA和fieldB数据类型不一致,需要添加类型转换,例如:
    item.TargetRow["fieldA"] = Convert.ToString(item.SourceValue);
    
  • 若存在一个dtA行匹配多个dtB行的情况,最后一次赋值会覆盖之前的结果,需确认业务逻辑是否允许这种情况。

内容的提问来源于stack exchange,提问作者Mark Roworth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:05:13