3

1つのリストを次のように定義しました

List<List<int>> thirdLevelIntersection = new List<List<int>>();

私は次のようにコードを書きました

for(int i = 0; i < 57; i++)
{
    if(my condition)
        thirdLevelIntersection[i] = null;
    else
    {
       //some logic
    }    
}

だから私は 0 から 56 の値のリストを取得し、いくつかの任意の値は null です](合計7)。

今、リストからこの値を削除したいと思います。

また、firstlevelIntersection[0] thirdlevelIntersection[49] からのリストを取得します。

私は何をすべきか?

4

3 に答える 3

3

ループが完了したら、試してください

thirdLevelIntersection.RemoveAll(list => list == null);
于 2013-03-28T01:54:07.717 に答える
1

thirdLevelIntersectionあるタイプのから作成している場合はsourceCollection、Linq を使用できます。

List<List<int>> thirdLevelIntersection = 
    (from item in sourceCollection
     where !(my condition)
     select item)
    .ToList();

または、複数のステートメントでリストを作成している場合は、作成中にそれを行うことができます:

thirdLevelIntersection.AddRange(
    from item in sourceCollection
    where !(my condition)
    select item);

これにより、項目が追加された後にリストから項目を削除する必要がなくなります。

于 2013-03-28T01:54:38.990 に答える
0

RemoveAt()呼び出してからデクリメントすることにより、リストを反復処理しているときにこれを行うことができますi(次の値が考慮されます)。

List<List<int>> thirdLevelIntersection = new List<List<int>>();

for(int i=0;i<57;i++)
{
    if (my condition)
    {
        thirdLevelIntersection.RemoveAt(i--);
        continue;
    }
    else
    {
        //some logic
    }
}
于 2013-03-28T01:55:07.960 に答える