[C#]リスト(List)の後ろからN個の要素を削除するには?

C#

どうも、ちょげ(@chogetarou)です。

リスト(List)の末尾からN個の要素を削除する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リスト(List)の後ろからN個の要素を削除する方法は、2つあります。

RemoveRange()

1つは、RemoveRange()を使う方法です。

まず、リスト(List)からRemoveRange()を呼び出します。

そして、RemoveRange()の第1引数にリストの長さを削除する要素数で引いた値、第2引数に削除する要素数を指定します。

リストの長さは、Countプロパティで取得します。

//N=削除する要素数
list.RemoveRange(list.Count - N, N);

上記のRemoveRange()は、呼び出したリスト(List)の後ろからN個の要素を削除します。

使用例

using System;
using System.Collections.Generic;

public class Sample
{
    public static void Main()
    {
        List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6 };
        
        int n = 3;
        numbers.RemoveRange(numbers.Count - n, n);
        
        foreach (int x in numbers)
        {
            Console.WriteLine(x);   
        }
    }
}
出力:
1
2
3

System.Linq

もう1つは、System.Linqを使う方法です。

まず、System.Linqを導入します。

using System.Linq;

次に、リスト(List)からTake()を呼び出します。

Take()の引数にリストの長さを削除する要素数で引いた値を指定します。

リストの長さは、Countプロパティで取得します。

そして、Take()からToList()を呼び出します。

//N=削除する要素数
List<T> result = list.Take(list.Count - n).ToList();

上記のToList()は、Take()を呼び出したリスト(List)の後ろからN個の要素を削除したリストを返します。(呼び出したリストに影響なし)

使用例

using System;
using System.Linq;
using System.Collections.Generic;

public class Sample
{
    public static void Main()
    {
        List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6 };
        
        int n = 3;
        List<int> result = numbers.Take(numbers.Count - n).ToList();
        
        foreach (int x in result)
        {
            Console.WriteLine(x);   
        }
    }
}
出力:
1
2
3

まとめ

リスト(List)の後ろからN個の要素を削除する方法は、次の2つです。

  • RemoveRange()を使う方法
    list.RemoveRange(list.Count - N, N);
  • System.Linqを使う方法
    List<T> result = list.Take(list.Count – n).ToList();

コメント

タイトルとURLをコピーしました