情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Enumerable.Distinct<TSource> メソッド (IEnumerable<TSource>)

2013/12/12

既定の等値比較子を使用して値を比較することにより、シーケンスから一意の要素を返します。

Namespace:  System.Linq
アセンブリ:  System.Core (System.Core.dll 内)

public static IEnumerable<TSource> Distinct<TSource>(
	this IEnumerable<TSource> source
)

型パラメーター

TSource

source の要素の型。

パラメーター

source
型: System.Collections.Generic.IEnumerable<TSource>
重複する要素を削除する対象となるシーケンス。

戻り値

型: System.Collections.Generic.IEnumerable<TSource>
ソース シーケンスの一意の要素を格納する IEnumerable<T>

使用上の注意

Visual Basic および C# では、このメソッドを、IEnumerable<TSource> 型の任意のオブジェクトのインスタンス メソッドとして呼び出すことができます。インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。

例外条件
ArgumentNullException

sourcenull です。

このメソッドは遅延実行を使用して実装されます。アクションの実行に必要なすべての情報を格納するオブジェクトがすぐに返されます。このメソッドで表されるクエリは、オブジェクトの GetEnumerator メソッドを直接呼び出すか、または Visual C# の foreach または Visual Basic の For Each を使用してオブジェクトが列挙されるまで、実行されません。

Distinct<TSource>(IEnumerable<TSource>) メソッドは、重複する値が格納されていない順序なしのシーケンスを返します。値の比較には、既定の等値比較子 Default が使用されます。

Visual Basic のクエリ式の構文では、Distinct 句が Distinct の呼び出しに変換されます。

既定の等値比較子 Default は、IEqualityComparer<T> ジェネリック インターフェイスを実装している型の値を比較するために使用されます。カスタム データ型を比較するには、このインターフェイスを実装し、その型の GetHashCode メソッドと Equals メソッドを独自に用意する必要があります。

Distinct<TSource>(IEnumerable<TSource>) を使用して、整数のシーケンスから一意の要素を返す方法を次のコード例に示します。


      List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };

      IEnumerable<int> distinctAges = ages.Distinct();

      outputBlock.Text += "Distinct ages:" + "\n";

      foreach (int age in distinctAges)
      {
         outputBlock.Text += age + "\n";
      }

      /*
       This code produces the following output:

       Distinct ages:
       21
       46
       55
       17
      */



一部のカスタム データ型のオブジェクトのシーケンスから一意の要素を返す場合は、IEqualityComparer<T> ジェネリック インターフェイスをクラスで実装する必要があります。

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: