c# - 通过相同的值从另一个连接的 DataTable 更新 DataTable 的多列

标签 c# linq join datatables updates

我知道这样的代码,

datatable_A.AsEnumerable().Join(datatable_B.AsEnumerable(),                                                                                                                                     
dt2Rows => dt2Rows.Field<string>("name"),                                                                                                                                         
dt1Rows => dt1Rows.Field<string>("name"),
(dt2Rows, dt1Rows) => new { dt2Rows, dt1Rows })
.ToList()
.ForEach(i => i.dt2Rows.SetField("phone number", i.dt1Rows.Field<string>("phone number")));

现在,我需要执行多个 lambda 表达式,例如,

.ForEach(i => i.dt2Rows.SetField("phone number", i.dt1Rows.Field<string>("phone number")),
         m => m.dt2Rows.SetField("address", m.dt1Rows.Field<string>("address")),
         k => k.dt2Rows.SetField("nickname", k.dt1Rows.Field<string>("nickname")),
         d => d.dt2Rows.SetField("body weight", d.dt1Rows.Field<string>("body weight"))
         );

我该怎么做?答案不应该是 lambda 表达式,任何类型的答案都可以。

谢谢!

最佳答案

如果我理解你的问题是正确的,你想在 ForEach 的每次迭代中执行多个操作,并且每次运行中的 i、m、k、d 都是相同的值,对吗?

在这种情况下,您可以简单地执行以下操作:

.ForEach(i => {
    i.dt2Rows.SetField("phone number", i.dt1Rows.Field<string>("phone number"));
    i.dt2Rows.SetField("address", i.dt1Rows.Field<string>("address"));
    i.dt2Rows.SetField("nickname", i.dt1Rows.Field<string>("nickname"));
    i.dt2Rows.SetField("body weight", i.dt1Rows.Field<string>("body weight"));
});

关于c# - 通过相同的值从另一个连接的 DataTable 更新 DataTable 的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72878632/

相关文章:

linq - IEnumerable 和 IQueryable 混淆

php - 尝试找ID还是使用JOIN哪个更有效

MySQL - 连接在同一个表上?

Mysql JOIN表并更新2列信息

c# - 为什么在嵌套容器上将 Structuremap 的 Transient 生命周期视为 ContainerScoped?

具有动态 Func<> 构造的 C# Fluent API

c# - 命名参数规范必须出现在指定所有固定参数之后

c# - Visual Studio 搜索和替换行尾

c# - 使用 LINQ 到具有集合属性的实体的最佳方式

visual-studio-2010 - 错误 'Newtonsoft.Json.Linq.JToken' 无法使用 TombstoneHelper 序列化