【发布时间】:2018-07-01 02:45:08
【问题描述】:
我需要使用 DataView 中的 RowFilter 来获取从视图中过滤掉的项目集合。
我可以使用以下查询从 DataView 中获取全部记录。
allRecords= (data as DataView).Table.AsEnumerable().AsQueryable();
我只需要来自 DataView 的 filtererd 记录集合。我怎样才能做到这一点。 EX:如果一个表作为记录a a, b, c, d 然后应用过滤器在视图中只显示一个。现在我需要获取不在视图中的项目(b、c 和 d)。帮我解决这个问题。
【问题讨论】:
-
您可以在两个集合之间使用Linq Except 来获取差异。
-
我曾尝试使用 except 方法,但与输出没有区别。
var table = (data as DataView).ToTable().AsEnumerable(); var allTable = (data as DataView).Table.AsEnumerable(); filteredRecords = allTable.Except(table).AsQueryable(); -
您需要与过滤后的表格进行比较,而不是完全相同的表格。
-
这里我提到的表是过滤表(仅包含 100 行),而 allTable 包含所有记录(225 行)。
-
它通过添加 Default DataRowComparer
allTable.Except(table, DataRowComparer.Default)来工作,谢谢。
标签: c# winforms filtering dataview