1

如何过滤我的 DataGrid 项目,如 MS Access 过滤器工作(只需通过鼠标选择单元格的某些部分并按“过滤器”按钮)?

我有带有 2 个命令(Filter 和 ClearFilter)的 ViewModel MyViewModel 和 ObservableCollection 我有带有 GetItems(...) 方法的模型;

在 DataGrid CellEditEnding 事件中,我保存选定的路径和列名:

_selectedColumn = e.Column;
if (e.EditingElement is TextBox)
    _selectedText = (e.EditingElement as TextBox).SelectedText;

所以我有 2 个参数:我的 T 对象的属性名称,需要对其进行排序,以及过滤值(两者都是 typeof String)。

我应该如何更改模型的方法 GetItems,它会起作用。方法 Model.GetItemws 使用 EntityFramework 从数据库中查询项目。如何将我的过滤器应用于此查询以及如何构建此查询?一些动态的 LINQ/Expression

var items = EFQuery().**Where(myFilter)**.ToList();

我应该在哪里以及如何创建这个 myFilter?

4

1 回答 1

0

您可以像这样编写过滤器 lambda:

.Where(x => x.GetType().GetProperty(AA).GetValue(x).ToString().Contains(BB))

其中 AA 是包含选定列名的变量

BB 是一个包含过滤文本的变量。

限制:您的属性 AA 必须是覆盖 ToString 方法的字符串或类

于 2019-06-28T12:31:58.993 回答