如何从另一个DataTable获取由几个列值过滤的子集DataTable?

use*_*925 1 c# datatable subset rowfilter

我遇到的问题是,我的搜索条件是:

Row["colName"] != "abc"  AND 
Row["colName"] != "def"  AND 
Row["colName"] != "ghic"  AND 
Row["colName"] != "klm"  AND
Row["colName"] != "xyz"  AND 
Row["colName"] != "mnp"  etc..
Run Code Online (Sandbox Code Playgroud)

换句话说,我的研究之后,我发现一些有关DefaultView的DataTable和RowFilter,但Rowfilter似乎只有一个值过滤.

我的情况是我需要过滤一堆值.

谢谢

Tim*_*ter 7

您可以使用Linq-To-DataTable和要排除的值集合.

查询语法:

string[] exclude = { "def", "ghic", "klm", "xyz", "mnp" };
var filteredRows = from row in dataTable.AsEnumerable()
                   where !exclude.Contains(row.Field<string>("colName"))
                   select row;
DataTable result = filteredRows.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

方法语法:

result = dataTable.AsEnumerable()
    .Where(r => !exclude.Contains(r.Field<string>("colName")))
    .CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)