无法将IEnumerable类型转换为ObservableCollection ...您是否错过了演员?

时间:2013-02-19 22:38:08

标签: wpf entity-framework-4 filter

我正在尝试返回bool“isAssy”为true的实体:

 public ObservableCollection<MasterPartsList> ParentAssemblyBOM
 {
      get {return this._parentAssemblyBOM.Where(parent => parent.isAssy == true); }
 }

但是整个语句用红色加下划线表示我不能“将IEnumerable类型转换为ObservableCollection ......你错过了演员吗?”

2 个答案:

答案 0 :(得分:9)

ObservableCollection<T>有一个overloaded constructor,它接受​​IEnumerable<T>作为参数。假设您的Linq语句返回MasterPartsList项的集合:

public ObservableCollection<MasterPartsList> ParentAssemblyBOM
{
    get 
    {
        var enumerable = this._parentAssemblyBOM
                             .Where(parent => parent.isAssy == true);

        return new ObservableCollection<MasterPartsList>(enumerable); 
    }
}

答案 1 :(得分:1)

您必须显式创建ObservableCollection,其中最简单的是:

public ObservableCollection<MasterPartsList> ParentAssemblyBOM
{
    get {return new ObservableCollection<MasterPartsList>(this._parentAssemblyBOM.Where(parent => parent.isAssy == true)); }
}

由于您每次都在创建新的集合,因此这可能效率低下。但是,如果每次返回完全不同的数据集,这可能是最简单的解决方案。否则,您必须遍历集合,删除不再在返回集中的项目并添加新项目。