使用实体框架过滤BindingSource

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用实体框架过滤BindingSource相关的知识,希望对你有一定的参考价值。

你好 如何在填充实体的BindingSource中使用过滤结果(使用EF 4)? 我试过这个:mybindingsource.Filter = "cityID = 1" 但似乎绑定源与实体框架不支持过滤..我是对吗?是否有另一种方法来过滤(搜索)绑定源中的数据。

PS: - 我正在使用Windows应用程序而不是ASP.NET。 - 我正在使用列表框来显示结果。

感谢名单

答案

也许比列昂尼德更好:

private BindingSource _bs;
private List<Entity> _list;

_list = context.Entities;
_bs.DataSource = _list;

现在需要过滤时:

_bs.DataSource = _list.Where<Entity>(e => e.cityID == 1).ToList<Entity>;

这样您就可以保留原始列表(从上下文中检索一次),然后使用此原始列表在内存中进行查询(无需来回查看数据库)。这样,您可以对原始列表执行各种查询。

另一答案

我想,你在语法上犯了错误。您应该像这样编写Filter:

mybindingsource.Filter = "cityID = '1'"

另一种方法是使用LINQ表达式。

(关于LINQ)为什么你必须再次调用Entity?

简单方案:

    public List<object> bindingSource;
    public IEnumerable FiltredSource
    {
        get{ return bindingSource.Where(c => c.cityID==1);
    }
另一答案
.where (Function (c) c.cityID = 1)

以上是关于使用实体框架过滤BindingSource的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

实体框架过滤器索引

添加新实体标量时实体框架 4 映射片段错误

BindingSource 按日期筛选

BindingSource.Filter 排除值 - 如何?

使用 .net 函数过滤实体框架信息