我正在尝试返回bool“isAssy”为true的实体:
public ObservableCollection<MasterPartsList> ParentAssemblyBOM
{
get {return this._parentAssemblyBOM.Where(parent => parent.isAssy == true); }
}
但是整个语句用红色加下划线表示我不能“将IEnumerable类型转换为ObservableCollection ......你错过了演员吗?”
答案 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)); }
}
由于您每次都在创建新的集合,因此这可能效率低下。但是,如果每次返回完全不同的数据集,这可能是最简单的解决方案。否则,您必须遍历集合,删除不再在返回集中的项目并添加新项目。