C# 是否创建支持IBindingListView的实体列表?

C# 是否创建支持IBindingListView的实体列表?,c#,winforms,data-binding,entity-framework-6,C#,Winforms,Data Binding,Entity Framework 6,我在数据存储库中使用以下代码返回实体列表。 我希望使用winforms bindingsource绑定到列表,然后能够支持和过滤bindingsource 我现在用的是 mybindingSource.datasource = repository.GetList(p => p.Id > 0 && p.Archived == false, x => x.Organisation); 但是mybindingSource.SupportsFilter返回fals

我在数据存储库中使用以下代码返回实体列表。 我希望使用winforms bindingsource绑定到列表,然后能够支持和过滤bindingsource

我现在用的是

mybindingSource.datasource =  repository.GetList(p => p.Id > 0 && p.Archived == false, x => x.Organisation);
但是mybindingSource.SupportsFilter返回false

存储库功能是

public virtual IList<T> GetList(Func<T, bool> where, params Expression<Func<T, object>>[] navigationProperties)
    {
        List<T> list;
        IQueryable<T> dbQuery = ((DbContext)this.context).Set<T>();

        //Apply eager loading
        foreach (var navigationProperty in navigationProperties)
        {
            dbQuery = dbQuery.Include(navigationProperty);
        }

         list = dbQuery.AsNoTracking().Where(where).ToList();

        return list;
    }
公共虚拟IList GetList(Func-where,参数表达式[]导航属性)
{
名单;
IQueryable dbQuery=((DbContext)this.context).Set();
//应用即时加载
foreach(navigationProperties中的var navigationProperty)
{
dbQuery=dbQuery.Include(navigationProperty);
}
list=dbQuery.AsNoTracking().Where(Where.ToList();
退货清单;
}

您可以使用Brian Noyes(本书作者)创建的
BindingListView


或者实现你自己的。如果您有更具体的问题,请询问

Microsoft提供了一篇关于在旧绑定列表上实现IBindingListView的文章

这个接口的主要问题是filter属性是一个字符串,并且表达式的格式没有标准。所以,您需要知道您将支持(或需要支持)什么作为字符串表达式。如果您希望属性“Country”上的“Trump”表达式过滤值“US”,而不是“Country=US”,您可以这样做


如果您想实现数据集表达式支持的完整副本,这可能会变得非常复杂。

我还在研究在数据集周围放置包装器。我还使用Nuget的Equin.ApplicationFramework.BindingListView问了一个相关问题