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

Enumerable.ToLookup<TSource, TKey, TElement> メソッド (IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)

2013/12/12

指定されたキー セレクター関数および要素セレクター関数に従って、IEnumerable<T> から Lookup<TKey, TElement> を作成します。

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

public static ILookup<TKey, TElement> ToLookup<TSource, TKey, TElement>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector
)

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TElement

elementSelector によって返される値の型。

パラメーター

source
型: System.Collections.Generic.IEnumerable<TSource>
Lookup<TKey, TElement> の作成元の IEnumerable<T>
keySelector
型: System.Func<TSource, TKey>
各要素からキーを抽出する関数。
elementSelector
型: System.Func<TSource, TElement>
各要素から結果の要素値を生成する変換関数。

戻り値

型: System.Linq.ILookup<TKey, TElement>
入力シーケンスから選択された TElement 型の値が含まれている Lookup<TKey, TElement>

使用上の注意

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

例外条件
ArgumentNullException

sourcekeySelector、または elementSelectornull です。

ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) メソッドは、Lookup<TKey, TElement> を返します。これは、値のコレクションにキーを割り当てる一対多のディクショナリです。Lookup<TKey, TElement> は、キーを 1 つの値に 1 対 1 でマッピングする Dictionary<TKey, TValue> とは異なります。

キーの比較には、既定の等値比較子 Default が使用されます。

ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) を使用し、キー セレクター関数および要素セレクター関数を使用して Lookup<TKey, TElement> を作成するコード例を次に示します。


      class Package
      {
         public string Company { get; set; }
         public double Weight { get; set; }
         public long TrackingNumber { get; set; }
      }

      public static void ToLookupEx1()
      {
         // Create a list of Packages.
         List<Package> packages =
             new List<Package>
                     { new Package { Company = "Coho Vineyard", 
                           Weight = 25.2, TrackingNumber = 89453312L },
                       new Package { Company = "Lucerne Publishing", 
                           Weight = 18.7, TrackingNumber = 89112755L },
                       new Package { Company = "Wingtip Toys", 
                           Weight = 6.0, TrackingNumber = 299456122L },
                       new Package { Company = "Contoso Pharmaceuticals", 
                           Weight = 9.3, TrackingNumber = 670053128L },
                       new Package { Company = "Wide World Importers", 
                           Weight = 33.8, TrackingNumber = 4665518773L } };

         // Create a Lookup to organize the packages. 
         // Use the first character of Company as the key value.
         // Select Company appended to TrackingNumber 
         // as the element values of the Lookup.
         ILookup<char, string> lookup =
             packages
             .ToLookup(p => Convert.ToChar(p.Company.Substring(0, 1)),
                       p => p.Company + " " + p.TrackingNumber);

         // Iterate through each IGrouping in the Lookup.
         foreach (IGrouping<char, string> packageGroup in lookup)
         {
            // Print the key value of the IGrouping.
            outputBlock.Text += packageGroup.Key + "\n";
            // Iterate through each value in the 
            // IGrouping and print its value.
            foreach (string str in packageGroup)
               outputBlock.Text += String.Format("    {0}", str) + "\n";
         }
      }

      /*
       This code produces the following output:

       C
           Coho Vineyard 89453312
           Contoso Pharmaceuticals 670053128
       L
           Lucerne Publishing 89112755
       W
           Wingtip Toys 299456122
           Wide World Importers 4665518773
      */



Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示: