2009-04-01 13 views
0

私はむしろ複雑なデータ構造を持っています。シンプルバージョンは次のようになります。リストからアイテムを削除する - C#

public class Field 
{ 

    List<FieldRow> fieldRow; 

    //I want to write a delete that iterates and deletes given the key 
    //(Use Linq?) 
    public void DeleteByKey(int key) 
    { 
    //Do Remove 
    } 
} 

public class FieldRow 
{ 
    public int key; 
} 

削除を実装する際の助けに感謝します。

答えて

3

List<T>().RemoveAll()はあなたが望むことをします。

あなたはwhere句のように、それは各アイテムに対して実行され、それを述語デリゲート型を与える:

fieldRow.RemoveAll(item => item.Key == key); 

ただし、Dictionary<int, FieldRow>にデータを格納検討する必要があります。そうすれば、キーで直接辞書/地図にアクセスできます。これにより、パフォーマンスが向上します。

+0

あなたは本当に* new *リストでそれを呼びたくはありません... fieldRow.RemoveAllはあなたのものです、私は思う:) –

+0

おっと、よく目撃された。それがシンタックスカラーリングとインテリセンスを得るためにVSに切り替えるためのものです! –

7
public class Field 
{ 
    List<FieldRow> fieldRow; 

    public void DeleteByKey(int key) 
    { 
    fieldRow.RemoveAll(row => key == row.key); 
    } 
} 

public class FieldRow 
{ 
    public int key; 
} 
1

削除する必要があるフィールドのインデックスがあり、リストのRemoveAtメソッドを使用できます。

1分で例を追加します。 Nevermind、述部でRemoveAllを使用するほうが良い選択肢と思われます:-)

関連する問題