내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 지정된 함수를 사용하여 각 그룹의 요소를 투영합니다.

네임스페이스:  System.Linq
어셈블리:  System.Core(System.Core.dll)

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

형식 매개 변수

TSource

source 요소의 형식입니다.

TKey

keySelector에서 반환하는 키의 형식입니다.

TElement

IGrouping<TKey, TElement> 요소의 형식입니다.

매개 변수

source
형식: System.Collections.Generic.IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
keySelector
형식: System.Func<TSource, TKey>
각 요소에 대해 키를 추출하는 함수입니다.
elementSelector
형식: System.Func<TSource, TElement>
각 소스 요소를 IGrouping<TKey, TElement>의 요소에 매핑하는 함수입니다.

반환 값

형식: System.Collections.Generic.IEnumerable<IGrouping<TKey, TElement>>
IGrouping<TKey, TElement> 개체에 TElement 형식의 개체 및 키의 컬렉션이 들어 있는 IEnumerable<IGrouping<TKey, TElement>>(C#의 경우) 또는 IEnumerable(Of IGrouping(Of TKey, TElement))(Visual Basic의 경우)입니다.

사용 정보

Visual Basic 및 C#에서는 이 메서드를 IEnumerable<TSource> 형식의 모든 개체에서 인스턴스 메서드로 호출할 수 있습니다. 인스턴스 메서드 구문을 사용하여 이 메서드를 호출할 경우에는 첫 번째 매개 변수를 생략합니다. 자세한 내용은 확장 메서드(Visual Basic) 또는 확장 메서드(C# 프로그래밍 가이드)를 참조하십시오.

예외조건
ArgumentNullException

source, keySelector 또는 elementSelectornull인 경우

이 메서드는 지연된 실행을 사용하여 구현됩니다. 해당 작업을 수행하는 데 필요한 모든 정보가 저장된 개체가 즉시 반환됩니다. 이 메서드에서 나타내는 쿼리는 해당 GetEnumerator 메서드를 직접 호출하거나, foreach(Visual C#의 경우) 또는 For Each(Visual Basic의 경우)를 사용하여 개체를 열거할 때까지 실행되지 않습니다.

GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) 메서드는 고유 키가 나타날 때마다 IGrouping<TKey, TElement> 개체 컬렉션을 하나씩 반환합니다. IGrouping<TKey, TElement> 은 해당 요소에 키가 함께 연결된 IEnumerable<T>입니다.

IGrouping<TKey, TElement> 개체가 생성되는 순서는 각 IGrouping<TKey, TElement>의 첫 번째 키를 만든 source의 요소 순서를 따릅니다. 그룹의 요소는 해당 요소를 만든 요소가 source에 나타나는 순서대로 생성됩니다.

기본 같음 비교자인 Default를 사용하여 키를 비교합니다.

다음 코드 예제에서는 GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>)를 사용하여 시퀀스의 요소를 그룹화하는 방법을 보여 줍니다.


            class Pet
            {
                public string Name { get; set; }
                public int Age { get; set; }
            }

            // Uses method-based query syntax.
            public static void GroupByEx1()
            {
                // Create a list of pets.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 },
                                   new Pet { Name="Daisy", Age=4 } };

                // Group the pets using Age as the key value 
                // and selecting only the pet's Name for each value.
                IEnumerable<IGrouping<int, string>> query =
                    pets.GroupBy(pet => pet.Age, pet => pet.Name);

                // Iterate over each IGrouping in the collection.
                foreach (IGrouping<int, string> petGroup in query)
                {
                    // Print the key value of the IGrouping.
                    Console.WriteLine(petGroup.Key);
                    // Iterate over each value in the 
                    // IGrouping and print the value.
                    foreach (string name in petGroup)
                        Console.WriteLine("  {0}", name);
                }
            }

            /*
             This code produces the following output:

             8
               Barley
             4
               Boots
               Daisy
             1
               Whiskers
            */



쿼리 식 구문에서 group by(Visual C#의 경우) 또는 Group By Into(Visual Basic의 경우) 절은 GroupBy 호출로 변환됩니다. 다음 예제의 쿼리 식 변환은 위 예제의 쿼리와 동일합니다.


IEnumerable<IGrouping<int, string>> query =
    from pet in pets
    group pet.Name by pet.Age;


참고참고

Visual C# 또는 Visual Basic 쿼리 식에서 요소 및 키 선택 식이 나타나는 순서는 GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) 메서드를 호출할 때의 인수 위치와 반대입니다.

.NET Framework

4.5.2, 4.5.1, 4.5, 4, 3.5에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

이식 가능한 클래스 라이브러리

이식 가능한 클래스 라이브러리에서 지원

Windows 스토어 앱용 .NET

Windows 8에서 지원

Windows Phone 앱용 .NET

Windows Phone 8, Silverlight 8.1에서 지원

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft