C# 是否创建支持IBindingListView的实体列表?
我在数据存储库中使用以下代码返回实体列表。 我希望使用winforms bindingsource绑定到列表,然后能够支持和过滤bindingsource 我现在用的是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
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问了一个相关问题