我将“bindingListView视图”绑定到的“dataGridView” Equin.ApplicationFramework . 根据文档过滤如下:
Equin.ApplicationFramework
View.ApplyFilter( delegate (SomeViewModel item) { return item.Code == textBox1.Text; } );
我需要一个可以过滤的过滤方法 item.Code == 'SomeText' 无论 BindingListView 有什么方法可以做到这一点吗?我想出了
item.Code == 'SomeText'
BindingListView
View.ApplyFilter( delegate (object item) { return item.GetType().GetProperty("Code").GetValue(item).ToString() == textBox1.Text; } );
不幸的是,它不起作用。我得到编译器错误:
无法将匿名方法转换为类型“delegate”,因为它不是 委托类型
我也试过解决方法 here 没有成功。
看起来这个方法需要 Predicate<T> . 你试过使用谓词语法吗?
Predicate<T>
View.ApplyFilter(i => (string)i.GetType().GetProperty("Code").GetValue(i) == "SomeText")
或者,让所有类实现一个公共接口并使用它来访问,这将是一个更好的设计。 Code . 如果没有办法使用反射,至少应该缓存 PropertyInfo 对于用作查询类型信息的每个不同类型而言,速度都相当慢。
Code
PropertyInfo