c# - 如何用另一个数据表更新一个数据表?

标签 c#

我想使用这样的方法连接两个数据表:

update u
set datatable1.column["state"]= datatable2.column["state"]
from datatable1 u
    inner join datatable2 s on
        u.column["header"]= s.column["header"]

linq 的语法是什么?

最佳答案

您不应尝试在 LINQ 查询中修改某些内容。如果 LINQ 查询引起副作用,这是一种不好的做法。但您可以收集需要更新的信息:

var updateQuery = from r1 in datatable1.AsEnumerable()
                  join r2 in datatable2.AsEnumerable()
                  on r1.Field<string>("header") equals r2 .Field<string>("header")
                  select new { r1, r2 };
foreach(var x in updateQuery)
{
    x.r1.SetField("state", x.r2.Field<string>("state"));
}

该查询实际上只是一个查询,它仅在foreach处执行一次,而且每次访问updateQuery时都会执行 -由于 LINQ 的延迟执行而导致的变量。如果你不想要这个,你必须创建一个集合,例如与 ToListToArray

关于c# - 如何用另一个数据表更新一个数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090818/

相关文章:

c# - TcpClient 的 NetworkStream 什么时候完成一次读操作?

c# - 带有格式提供程序的 Expression.ToString()

c# - SET READ_COMMITTED_SNAPSHOT ON 的 ADO.Net IsolationLevel.Snapshot

c# - 为什么不能从扩展方法的使用中推断出类型?

c# - "I am alive"服务的设计

c# - 用于 P/Invoke 访问的引脚数据

c# - 反射方法 GetMethod 在 iphone 上不返回类的静态方法,但在模拟器上返回

c# - 函数的功能在一个方向上起作用,而不是在另一个方向上起作用

c# - 显式绑定(bind)重定向与自动生成的绑定(bind)重定向冲突

C# 如何转义 eval <%?