我遇到的问题是,我的搜索条件是:
Row["colName"] != "abc" AND
Row["colName"] != "def" AND
Row["colName"] != "ghic" AND
Row["colName"] != "klm" AND
Row["colName"] != "xyz" AND
Row["colName"] != "mnp" etc..
换句话说,在我的研究之后,我发现了DefaultView
和DataTable
的{{1}},但RowFilter
似乎只过滤了一个值。
我的情况是我需要按一堆值进行过滤。
由于
答案 0 :(得分:6)
您可以使用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();
方法语法:
result = dataTable.AsEnumerable()
.Where(r => !exclude.Contains(r.Field<string>("colName")))
.CopyToDataTable();
答案 1 :(得分:1)
您可以使用AsEnumerable
获取IEnumerable<DataRow>
行,并对其进行Where
。
var criteria = new List<string>();
criteria.Add("abc");
criteria.Add("def");
criteria.Add("ghic");
//etc
var filteredRows = myDataTable.AsEnumerable()
.Where(row => !criteria.Contains(row["colName"].ToString()));