C# DataTable 选择列名类似的列

标签 c# linq datatable

我想选择 DataTable 中以字符“hz”开头的所有列。目前我正在这样做:

var uploadTable = dataTable.DefaultView.ToTable(false, "locID", "hz1582", "hz1581", "hz1580", "hz1579", "hz1578", "hz1577", "hz1576", "hz1575", "hz1574", "hz1573", "hz1572", "hz1571");

但是,每次运行代码时,“hz”列都是可变的,因此我需要某种方式来选择表中以 hz 开头的所有列。另请注意,列 'locID' 始终存在并且需要返回。所以,我需要这样的东西:
var uploadTable = dataTable.DefaultView.ToTable(false, "locID", "hz%");

有任何想法吗?
谢谢。

最佳答案

我会使用 LINQ 来完成这个任务:

DataTable uploadtable = dataTable.Copy();
var removeColumns = dataTable.Columns.Cast<DataColumn>()
   .Where(c => !c.ColumnName.StartsWith("hz", StringComparison.InvariantCultureIgnoreCase));

foreach (DataColumn colToRemove in removeColumns)
    uploadtable.Columns.Remove(colToRemove.ColumnName);

关于C# DataTable 选择列名类似的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668184/

相关文章:

c# - 删除其他表中没有引用的行

javascript - JQuery dataTable删除id和class结果行需要在值中搜索

jquery - 如何缩短这些重复的jQuery插件参数?

c# - 如何从 svg 扩展名 svg 中读取 xml 代码

c# - 多个where linq

c# - 重绘和自定义形状的窗口问题

mysql - 如何使用 MySQL(如 SqlBulkCopy)和 Linq to Entities 进行批量插入

c# - 我如何重构/扩展以下模型

c# - LINQ to SQL 在填充对象之前解密值

c# - 在 DataRow 中设置特定列