2017-08-28 24 views
0

SelectManyはコレクションのコピーを作成するようです。私は、フラット化されたコレクションからアイテムを削除し、変更を維持する方法を探しています。SelectManyを使用して元のコレクションを変更する方法

例:除去アイテムのすべてのリターン1以上の、しかし

var removed = FooItems 
.SelectMany(x => x.Children) 
.ToList() 
.RemoveAll(y => y.ID == "1"); 

ザ思わそのコレクションのコピーから除去され、原稿が変更されません。

アドバイスをお願いします。

+1

のLINQのような何かを行う必要があるだろう。代わりに 'FooItems'をループし、' Children'が 'List 'であれば 'RemoveAll'を使って各' Children'コレクションから削除する必要があります。 – juharr

答えて

2

ChildrenList<T>であるとすると、FooItemsをループして、それぞれChildrenリストから削除できます。 Childrenもし

foreach(var foo in FooItems) 
    foo.Children.RemoveAll(y => y.ID == "1"); 

ではありませんが、List<T>IEnumerableが、あなたは元のコレクションを変異に適していない

foreach(var foo in FooItems) 
    foo.Children = foo.Children.Where(y => y.ID != "1").ToList(); 
関連する問題