どうも、ちょげ(@chogetarou)です。
配列(Array)から複数の要素をまとめて削除する方法を紹介します。
方法

配列(Array)から複数の要素をまとめて削除する方法は、3つあります。
Array.FindAll()
1つ目は、Array.FindAll()を使う方法です。
まず、Array.FindAll()を呼び出します。
そして、Array.FindAll()の第1引数に配列、第2引数に削除したい要素でFalseになる条件式を返すラムダ式を指定します。
//条件式は削除したい要素でFalseになるようにする
T[] result = Array.FindAll(array, item => 条件式);
上記のArray.FindAll()は、第2引数のラムダ式で返す条件式でFalseとなる要素を、第1引数の配列(Array)から削除した新しい(Array)を返します。
使用例
using System;
public class Example
{
public static void Main()
{
int[] numbers = new int[10] { 1, 2, 1, 3, 1, 1, 4, 5, 1, 1};
int[] result = Array.FindAll(numbers, item => item != 1);
Console.WriteLine(String.Join(",", result)); //2,3,4,5
}
}
Where()
2つ目は、System.LinqのWhere()を使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、配列からWhere()メソッドを呼び出します。
Where()の引数に、削除したい要素でFalseになる条件式を返すラムダ式を指定します。
そして、Where()からToArray()を呼び出します。
//条件式は削除したい要素でFalseになるようにする
T[] result = array.Where(item => 条件式).ToArray();
上記のWhere().ToArray()は、ラムダ式で返す条件式でFalseとなる要素を、呼び出した配列(Array)から削除した新しい(Array)を返します。
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
int[] numbers = new int[10] { 1, 2, 1, 3, 1, 1, 4, 5, 1, 1};
int[] result = numbers.Where(item => item != 1).ToArray();
Console.WriteLine(String.Join(",", result)); //2,3,4,5
}
}
Except()
3つ目は、System.LinqのExcept()を使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、配列(Array)からExcept()を呼び出します。
Except()の引数に削除する要素をまとめた配列を指定します。
そして、Except()からToArray()を呼び出します。
T[] result = array.Except(new T[] { item1, item2, ・・・ }).ToArray();
上記のExcept().ToArray()は、引数に指定した配列が持っている要素を、呼び出した配列から削除した新しい配列を返します。
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
int[] numbers = new int[10] { 10, 2, 1, 3, 1, 10, 4, 5, 1, 10};
int[] result = numbers.Except(new int[] { 1, 10 }).ToArray();
Console.WriteLine(String.Join(",", result)); //2,3,4,5
}
}
まとめ
配列(Array)から複数の要素をまとめて削除する方法は、次の3つです。
- Array.FindAll()を使う方法
- Where()を使う方法
- Except()を使う方法
コメント