정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Enumerable.ToLookup<TSource, TKey, TElement> 메서드 (IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)

2013-12-13

지정된 키 선택기와 요소 선택기 함수에 따라 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

source 또는 keySelector 또는 elementSelectornull입니다.

ToLookup<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) 메서드는 키를 값 컬렉션에 매핑하는 일대다 사전인 Lookup<TKey, TElement>을 반환합니다. Lookup<TKey, TElement>는 키를 단일 값에 일대일로 매핑하는 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

Windows Phone

표시: