我尝试使用自定义函数过滤dataview,但无法识别。可能吗 ?如果有的话是什么文章?
答案 0 :(得分:3)
您不能在RowFilter
中将自定义函数用作DataView
,只能使用DataColumn.Expression
属性文档中定义的表达式。在表达式的上下文中你可以做很多事情,所以通常就足够了。
如果您的函数执行了无法在表达式中执行的操作,快速而肮脏的解决方法是在其上添加临时列和过滤器:
dv.Table.Columns.Add("Flag", typeof(bool));
foreach (DataRow dr in dv.Table.Rows)
{
dr.SetField("Flag", myFunction(dr);
}
dv.RowFilter = "Flag = True";
答案 1 :(得分:1)
以下是名为dv的DataView的各种过滤器的一些示例:
dv.RowFilter = "Country = 'USA'";
dv.RowFilter = "EmployeeID >5 AND Birthdate < #1/31/82#"
dv.RowFilter = "Description LIKE '*product*'"
dv.RowFilter = "employeeID IN (2,4,5)"
等号前面的名称是DataView中列或字段的名称。
答案 2 :(得分:1)
你可以use a CollectionView,这将允许分组,过滤等。它将与DataTables / DataSets一起使用
DataTable table = MyDataSet["MyDataTable"]
ICollectionView collectionView = CollectionViewSource.GetDefaultView(table );
collectionView.Filter = new Predicate<object>(FilterOutA);