使用bindingSource的过滤器和Entity Framework

时间:2012-08-25 19:35:16

标签: c# entity-framework bindingsource

我正在使用C#win-form应用。

在我的表单中,我有与绑定源绑定的Data-Grid-View和绑定源数据源是实体框架的表。

当我使用实体框架时,我无法使用绑定源的过滤器和按数据网格视图的列排序,但是当我不使用实体框架时,我可以使用它们。 我如何在实体框架中使用它们?

表单加载时的代码

contex = new myEntity();
myBindingSource.DataSource = contex.myTable;

2 个答案:

答案 0 :(得分:4)

每个BindingSource都有一个属性 SupportsFiltering (以及 SupportsSorting )。如果您将 entitySet设置为DataSource ,这两个属性会自动设置为 false !所以有一些可能的解决方案。您可以使用IEnumberable<T>Linq2Entities提供扩展方法,也可以选择使用myEntity context = new myEntity(); myBindingSource.DataSource = (from m in context.myTable where m.PROPERTY MEETS CONDITION select m).ToList<TYPE>(); 进行过滤/排序。

Linq2Entities 的代码段可以是:

// extension method
public static IEnumerable<T> Filter<T>(this IEnumerable<T> list, Func<T, bool> filterParam) {
        return list.Where(filterParam);
}

// filtering example
context.myTable.Filter(x => x.ItemName.StartsWith("Test"))

扩展程序的代码段:

{{1}}

此外,此主题已经多次讨论过,即使在here上也是如此。

答案 1 :(得分:0)

您标记了实体框架,但未显示您的模型。假设MyEntity是您的ObjectContext或DBContext,您可以绑定到DbSet的local property,这是一个支持排序的可观察集合。

myBindingSource.DataSource = contex.myTable.Local;