【问题标题】:C# data table bulk update without loopingC#数据表批量更新不循环
【发布时间】:2018-02-07 19:32:22
【问题描述】:

是否可以在不循环的情况下批量更新 c# 数据表中的多个列?

我的数据表有太多行,循环和更新每一行需要一段时间才能完成。

【问题讨论】:

  • 您可以批量插入临时表并将临时表合并到最终表中。
  • 使用 Linq 方法比传统循环快得多。所以像这样枚举表:dt.AsEnumerable().Select(x => x.ItemArray = new object[] {1,"A",5});
  • 多少行?什么是“一段时间”?
  • @mjwills 它只是更新
  • @BugFinder 大约 500-1000 行

标签: c# datatable


【解决方案1】:

您可以在数据库中创建一个新的DataType,它可以保存整个表格,就像在 c# 或 VB 中的 DataTable 一样。并一口气将整个表传递给 sp。

创建新数据类型的脚本

创建类型 EmpType 作为表 (

ID INT,名称 VARCHAR(3000),

地址 VARCHAR(8000),

SMALLINT 行动

)

在您的 sp 中接收并插入您的实际表格中

ALTER PROCEDURE spEmpDetails

@Details EmpType 只读

作为

插入员工详细信息(ID、姓名、地址)

SELECT ID, Name, Address FROM @Details WHERE Operation=0;

如何在 c# 代码中调用该 sp

SqlCommand cmdProc = new SqlCommand("spEmpDetails", con); cmdProc.CommandType = CommandType.StoredProcedure; cmdProc.Parameters.AddWithValue("@Details", dtDetails); cmdProc.ExecuteNonQuery();

【讨论】:

猜你喜欢
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2020-07-03
  • 2013-06-28
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多