用自定义函数过滤数据视图的意思是什么?

时间:2009-11-28 19:08:36

标签: c#

我尝试使用自定义函数过滤dataview,但无法识别。可能吗 ?如果有的话是什么文章?

3 个答案:

答案 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);