[C#]配列(Array)から重複がある要素を抽出するには?

C#

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

配列(Array)から重複がある要素を抽出する方法を紹介します。

スポンサーリンク

方法

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

配列(Array)から重複がある要素を抽出するには、System.Linqを使います。

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

using System.Linq;

次に、配列(array)からGroupBy()を呼び出します。

GroupBy()の引数に、引数をそのまま返すラムダ式を指定します。

GroupBy()からWhere()を呼び出し、Where()のラムダ式で「引数.Count() > 1」を返します。

そして、Where()からSelect()を呼び出し、Select()のラムダ式で引数のKeyプロパティを返します。

var result = array.GroupBy(x => x)
        .Where(x => x.Count() > 1)
        .Select(x => x.Key);

上記のSelect()は、GroupBy()を呼び出した配列(Array)から重複する要素を抽出します。

使用例

using System;
using System.Linq;
public class Example
{
	public static void Main()
	{
		int[] numbers = new int[] { 1, 2, 3, 1, 1, 4, 3, 5 };
		
		var duplicates = numbers.GroupBy(x => x)
		    .Where(x => x.Count() > 1)
		    .Select(x => x.Key)
		    .ToArray();
		
		foreach(var i in duplicates)
		{
		    Console.WriteLine(i); //1, 3
		}
 	}
}

コメント

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