[英]Remove rows from DataTable that do not exist in a list
我有一个包含列名称的动态列表
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";
我不确定你为什么要检查DataRow
上是否存在列,它们是在DataTable
上定义的,但是这可行:
if (row.Table.Columns.Cast<DataColumn>().Any(x => !newList.Contains(x.ColumnName)))
{
rowsToDelete.Add(row);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.