【问题标题】:Filtering DataGrid, MVVM, Dynamic LINQ过滤 DataGrid、MVVM、动态 LINQ
【发布时间】:2010-12-27 07:56:05
【问题描述】:

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

我有带有 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?

【问题讨论】:

  • This 可能会有所帮助。
  • 谢谢。它有助于 PredicateBuilder 和 LinqKit

标签: c# mvvm datagrid entity-framework-4 dynamic-linq


【解决方案1】:

你可以这样写过滤器 lambda:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 2011-03-05
    • 2020-10-13
    • 2020-06-07
    • 2017-09-02
    • 2011-08-14
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多