过滤列中有多个值的DATATABLE行



我有一个多列的数据表(dt),这是DataGridView的源。我试图用值列表过滤这个数据表(dt)

我需要用员工姓名列表过滤下面的DataTable(dt)。EmpList = {'Pete',' allen '}

This is my DataTable

3来自

如果你想过滤数据表,你可以使用DefaultView。RowFilter,加入要比较的值的集合,并在比较中使用IN()运算符:

var names = new[]{ "Allen", "Pete" };
var values = string.Join("', '", names);
dt.DefaultView.RowFilter = $"Employee IN('{values}')";

注意字符串是用逗号和单引号连接的:', '
要删除过滤器,只需将其设置为string.Empty

如果你想返回一个新的数据表,你可以使用CopyToDataTable方法:

var dtFiltered = dt.AsEnumerable()
.Where(dr => names.Any(s => s.Equals(dr["Employees"]))).CopyToDataTable();

你也可以把DataTable赋值给它自己:

dt = dt.AsEnumerable().Where(...).CopyToDataTable();

我假设你已经引用了System.Data.DataSetExtensions,因为你在你的代码中使用AsEnymerable()

最新更新