이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

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

 

게시 날짜: 2016년 11월

지정 된 키 선택기 함수 및 프로젝트는 지정 된 함수를 사용 하 여 각 그룹에 대 한 요소에 따라 시퀀스의 요소를 그룹화 합니다.

네임스페이스:   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
)

매개 변수

source
Type: System.Collections.Generic.IEnumerable<TSource>

IEnumerable<T> 요소를 그룹화 합니다.

keySelector
Type: System.Func<TSource, TKey>

각 요소에 대해 키를 추출하는 함수입니다.

elementSelector
Type: System.Func<TSource, TElement>

각 소스 요소에 있는 요소에 매핑하는 함수는 IGrouping<TKey, TElement>합니다.

반환 값

Type: System.Collections.Generic.IEnumerable<IGrouping<TKey, TElement>>

IEnumerable<IGrouping<TKey, TElement>> C# 또는 IEnumerable(Of IGrouping(Of TKey, TElement)) 에서 Visual Basic 여기서 각 IGrouping<TKey, TElement> 형식 개체의 컬렉션을 포함 하는 개체 TElement 및 키입니다.

형식 매개 변수

TSource

요소 형식의 source합니다.

TKey

반환 된 키의 형식 keySelector합니다.

TElement

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

Exception Condition
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> 개체의 요소 순서를 기반으로 하는 순서로 생성 되기 때문 source 각각의 첫 번째 키를 생성 하는 IGrouping<TKey, TElement>합니다. 그룹의 요소를 생성 하는 요소에 표시 되는 순서 대로 생성 됩니다 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;
System_CAPS_note참고

에 Visual C# 또는 Visual Basic 쿼리 식, 요소 및 키 선택 식에 대 한 호출의 인수 위치에서 반대 순서로 수행는 GroupBy<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) 메서드.

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
3.5 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: