我该如何过滤我的DataGrid项目,例如MS Access过滤器(只需用鼠标选择单元格的某个部分并按“过滤器”按钮)?
我有带2个命令(Filter和ClearFilter)和ObservableCollection的ViewModel MyViewModel,我有带方法GetItems(...)的Model;
在DataGrid CellEditEnding事件中,我保存了所选的路径和列名称:
_selectedColumn = e.Column;
if (e.EditingElement is TextBox)
_selectedText = (e.EditingElement as TextBox).SelectedText;
因此,我有两个参数:我的T对象的属性名称(必须在其上进行排序)和过滤器值(均为typeof String)。
我应该如何更改模型的方法GetItems,它将如何工作。方法Model.GetItemws使用EntityFramework从数据库中查询项目。如何将我的过滤器应用于此查询,以及如何构建此查询?一些动态的LINQ / Expression
var items = EFQuery().**Where(myFilter)**.ToList();
我应该在哪里以及如何创建此myFilter?
您可以这样编写过滤器lambda:
.Where(x => x.GetType().GetProperty(AA).GetValue(x).ToString().Contains(BB))
其中AA是包含所选列名的变量
BB是包含过滤器文本的变量。
限制:您的属性AA必须是已覆盖ToString方法的字符串或类。