[C#]Linqで配列(Array)から複数の要素を削除するには?

C#

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

Linqを使って、配列(Array)から複数の要素をまとめて削除する方法を紹介します。

スポンサーリンク

方法

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

Linqを使って、配列(array)から要素をまとめて削除する方法は、2つあります。

Where()

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

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

using System.Linq;

次に、配列からWhere()メソッドを呼び出します。

Where()の引数に、削除したい要素でFalseになる条件式を返すラムダ式を指定します。

そして、Where()からToArray()を呼び出します。

//条件式は削除したい要素でFalseになるようにする
T[] result = array.Where(item => 条件式).ToArray();

上記のWhere().ToArray()は、ラムダ式で返す条件式でFalseとなる要素を、呼び出した配列(Array)から削除した新しい(Array)を返します。

Where()の引数のラムダ式は、引数で配列の要素を取得します。

使用例

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()

もう1つは、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
 	}
}

まとめ

Linqを使って配列(Array)から複数の要素をまとめて削除する方法は、次の2つです。

  • Where()を使う方法
  • Except()を使う方法

コメント

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