3

bool "isAssy" が true のエンティティを返そうとしています:

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

しかし、ステートメント全体に赤い下線が引かれ、「タイプ IEnumerable を ObservableCollection に変換できません... キャストがありませんか?」と示されています。

4

2 に答える 2

10

ObservableCollection<T>をパラメーターとして受け入れるオーバーロードされたコンストラクターIEnumerable<T>があります。MasterPartsListLinq ステートメントがアイテムのコレクションを返すと仮定します。

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 に答える