C#でシーケンスから重複のない要素を取得する方法
C#では、LINQのDistinct()メソッドを使うことで、シーケンス(コレクション)から重複する要素を取り除き、一意な要素だけを簡単に取得できます。この記事では、Listに含まれる重複した値を除去して、個別の要素のみを抽出するプログラムを紹介します。
シーケンスと要素の準備
まず、シーケンスとしてリストを作成し、要素を追加します。ここでは、意図的に重複した値を含む整数型のリストを用意しました。
List<int> ID = new List<int> { 120, 111, 250, 111, 120, 300, 399, 450 };
このリストには「111」と「120」がそれぞれ2回登場しています。
Distinct()メソッドで一意な要素を取得
重複を排除して個別の要素を取得するには、Distinct()メソッドを使用します。AsQueryable()を経由して呼び出すことで、クエリとして処理されます。
IEnumerable<int> res = ID.AsQueryable().Distinct();
Distinct()は遅延実行されるため、foreach文などで列挙したタイミングで初めて結果が評価されます。
サンプルコード(完全版)
以下が全体のコード例です。
using System;
using System.Linq;
using System.Collections.Generic;
class Demo {
static void Main() {
List<int> ID = new List<int> { 120, 111, 250, 111, 120, 300, 399, 450 };
// 重複のない要素を取得
IEnumerable<int> res = ID.AsQueryable().Distinct();
foreach (int arr in res) {
Console.WriteLine(arr);
}
}
}
実行結果
プログラムを実行すると、重複が除去された次の出力が得られます。
120 111 250 300 399 450
ポイント解説
- System.Linq名前空間が必要です。Distinct()はLINQ拡張メソッドのため、usingディレクティブに必ず追加しましょう。
- 戻り値はIEnumerable<T>です。即座にリスト化したい場合は、
ToList()やToArray()を組み合わせると便利です。 - 文字列などの参照型に対してもDistinct()は使用できます。デフォルトでは等値比較子による比較が行われます。
このように、Distinct()メソッドを活用すれば、わずか1行のコードでシーケンスから重複要素を効率的に除去できます。データの前処理やユニークなIDの一覧作成など、さまざまな場面で役立つテクニックなので、ぜひ覚えておきましょう。
-
Pythonでリストから重複要素を削除する方法を徹底解説
重複した要素を含むリストが与えられたとき、重複を取り除いた新しいリストを作成するのが本記事のテーマです。初心者の方にも理解しやすいよう、基本的なアルゴリズムの手順から実際のコードまで順を追って解説していきます。 実行例 入力::[2,3,4,3,4,6,78,90] 出力::[2,3,4,6,78,90] アルゴリズム 重複要素を削除するための基本的な手順は以下の通りです。 元となるリストを作成する。 空の新しいリストを用意する。 元のリストの各要素を先頭から順番に走査する。 その要素が新しいリストにまだ存在しないかどうかを判定する。 存在しない場合のみ、新しいリストへ要素を追加する。
-
Redis LINDEXコマンドの使い方 – リストから指定インデックスの要素を取得する方法
このチュートリアルでは、Redisのリスト型データから特定のインデックス位置にある要素を取得する方法について解説します。要素の取得には、RedisのLINDEXコマンドを使用します。 LINDEXコマンドとは LINDEXコマンドは、キーに格納されたリスト値の中から、指定したインデックス位置にある要素を返します。 インデックスはゼロベース(0始まり)で扱われます。つまり、「0」は先頭の要素、「1」は2番目の要素を意味します。また、負の数値を使うことも可能で、「-1」は末尾の要素、「-2」は末尾から2番目の要素といった具合に、後ろから数えた位置を指定できます。 なお、範囲外のインデックス値を指定