c# - 从 DataTable 中删除列表中不存在的行
问题描述
我有一个包含列名的动态列表
var newList = new List<string>(){ "ColName1", "ColName2", "ColName3", "ColName4" };
我还有一个包含这些列名的数据表。但是,此数据表需要与我的列表匹配,因此如果此数据表中的列在列表中不存在,则需要将其删除。我怎样才能做到这一点?到目前为止,这就是我所拥有的
DataTable sourceData = new DataTable();
List<DataRow> rowsToDelete = new List<DataRow>();
foreach (DataRow row in sourceData.Rows)
{
if (!newList.Contains(row[""].ToString())) //Errors here as the names cannot be hardcoded. It needs to be dynamic
{
rowsToDelete.Add(row);
}
}
foreach (DataRow row in rowsToDelete)
{
sourceData.Rows.Remove(row);
}
sourceData.AcceptChanges();
解决方案
您可以像这样简单地删除它们:
foreach(string col in newList)
if(sourceData.Columns.Contains(col))
sourceData.Columns.Remove(col);
但是,最好不要一开始就将它们包含在您的查询中:
string query = $"select {string.Join(",", newList)} from someTable";
推荐阅读
- ios - Kitura 在嵌套结构中给了我模棱两可的表达类型
- javascript - 检查组件是否是 React.ReactElement 的实例
在子地图中 - r - 在 R (ggplot2) 中将分组条形图居中
- python-3.x - 来自机器人的土豆质量音频
- rust - 如何将 rust snafu 错误枚举移动到一个模块中并从另一个模块中使用它?
- plotly - 是否可以在 plotly 中自定义 sankey 节点宽度?
- maven - 每当添加 sonarqube 依赖项时,需要协助解决 Maven 阴影插件问题
- animation - 使用CSS制作动画时如何找到Transform Rotate的中心点?
- css - 这个渐变设计是整个背景图片还是CSS中的单独图片?
- javascript - 为什么这个 .responseToString 函数说它不是函数?