过滤DataGrid,MVVM,动态LINQ

时间:2010-12-27 07:56:06

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

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

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

的模型

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

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

所以我有两个参数:我的T对象的属性名称,需要对其进行排序,并过滤值(两者都是字符串类型)。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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