C# LINQのExcept()メソッドで2つの配列の差分を取得する方法
C# LINQのExcept()メソッドとは
C#のLINQには、2つのコレクションを比較して差分を求めるためのExcept()メソッドが用意されています。このメソッドは、最初のシーケンスに含まれる要素のうち、2番目のシーケンスに存在しない要素だけを返します。
例えば、次のような2つの整数型配列があるとします。
int[] arr = { 9, 12, 15, 20, 35, 40, 55, 67, 88, 92 };
int[] arr2 = { 20, 35 };この2つの配列の差分を求めるには、Except()メソッドを使用します。以下のように記述することで、最初の配列から2番目の配列に含まれる要素を除外した結果が得られます。
arr.AsQueryable().Except(arr2);
サンプルコード
以下は、Except()メソッドを使用した完全なサンプルプログラムです。
using System;
using System.Linq;
using System.Collections.Generic;
class Program {
static void Main() {
int[] arr = { 5, 10, 15, 20, 35, 40 };
int[] except = { 20, 35 };
Console.WriteLine("Initial List...");
foreach(int ele in arr)
Console.WriteLine(ele);
IEnumerable<int> res = arr.AsQueryable().Except(except);
Console.WriteLine("New List...");
foreach (int a in res)
Console.WriteLine(a);
}
}
実行結果
Initial List...
5
10
15
20
35
40
New List...
5
10
15
40
このように、Except()メソッドを使うことで、元のリストから指定した要素(この例では20と35)を簡単に除外できます。出力結果を見ると、新しいリストには5、10、15、40のみが含まれており、2番目の配列に存在する要素が正しく取り除かれていることがわかります。
-
【初心者向け】C#のLINQ Whereメソッドの使い方を徹底解説!条件に合う要素を抽出する方法
C# LINQのWhereメソッドとは? C#のLINQに用意されているWhereメソッドは、指定した条件(述語:Predicate)に基づいて、コレクションや配列の中から該当する要素だけを抽出(フィルタリング)するためのメソッドです。 データの一覧から特定の条件を満たす項目のみを取り出したい場面は開発現場で非常に多く、WhereメソッドはLINQの中でも特に使用頻度の高い機能といえます。 例えば、以下のように記述すると「70以上の要素」だけを取得できます。 Where((n, index) => n >= 70); このラムダ式では、各要素 n が70以上であるかどうかを判定し、
-
C# LINQ Distinct()メソッドでリストから重複要素を削除する方法
C#のLINQで重複しない要素(一意の値)だけを取得したい場合は、Distinct()メソッドを使用します。このメソッドは、シーケンス内の重複する要素を取り除き、各要素を1度だけ返してくれます。 重複要素を含むリストの準備 まずは、重複した要素を含むリストを用意しましょう。 List<int> points = new List<int> { 5, 10, 5, 20, 30, 30, 40, 50, 60, 70 }; このリストには「5」と「30」がそれぞれ2回含まれています。 Distinct()メソッドで重複を除去する 重複を除いた要素を取得するには、次のように