用列表过滤数据表
本文关键字:数据表 过滤 列表 | 更新日期: 2023-09-27 18:16:10
我想删除包含列表中提供的现有站点的所有Datatable行。但是我的代码的问题是它只从Datatable中删除List的最后一项。
对不起,第一次有一点模糊的问题,但修复一个遗留的应用程序,所以不得不使用。net 2.0:(我知道我的逻辑问题,只是无法找到替代!
DataView cView = result.DefaultView;
foreach (string items in existingSites)
{
cView.RowFilter = "Sites <> '" + items + "'";
}
dgvResult.DataSource = cView;
可以使用LINQ (>= .NET 3.5)吗?
DataTable result = result.AsEnumerable()
.Where(row => !items.Contains(row.Field<string>("Sites")))
.CopyToDataTable();
这是因为您一直在重置过滤器。试试这个:
DataView cView = result.DefaultView;
StringBuilder sb = new StringBuilder();
bool first = true;
foreach (string items in existingSites)
{
if (first)
{
first = false;
}
else
{
sb.Append(" AND ");
}
sb.AppendFormat("Sites <> '{0}'", items);
}
cView.RowFilter = sb.ToString();
dgvResult.DataSource = cView;
当然,这不是最好的解决方案,如果你可以使用新的框架选项,如LINQ(参见Tim的回答)。