3

我正在尝试返回布尔“isAssy”为真的实体:

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

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

4

2 回答 2

10

ObservableCollection<T>有一个接受 a作为参数的重载构造函数。IEnumerable<T>假设您的 Linq 语句返回MasterPartsList项目集合:

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

        return new ObservableCollection<MasterPartsList>(enumerable); 
    }
}
于 2013-02-19T22:41:37.203 回答
1

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

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

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

于 2013-02-19T22:42:30.073 回答