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

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

지정된 키 누적기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹의 결과 값과 해당 키를 만듭니다. 각 그룹의 요소는 지정된 함수를 통해 투영됩니다.

네임스페이스:  System.Linq
어셈블리:  System.Core(System.Core.dll)
public static IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TSource, TElement> elementSelector,
	Func<TKey, IEnumerable<TElement>, TResult> resultSelector
)

형식 매개 변수

TSource

source 요소의 형식입니다.

TKey

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

TElement

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

TResult

resultSelector에서 반환하는 결과 값의 형식입니다.

매개 변수

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

반환 값

형식: System.Collections.Generic.IEnumerable<TResult>
각 요소가 그룹과 해당 키에 대한 프로젝션을 나타내는 TResult 형식의 요소 컬렉션입니다.

사용 정보

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

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

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


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

            public static void GroupByEx4()
            {
                // Create a list of pets.
                List<Pet> petsList =
                    new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                                   new Pet { Name="Boots", Age=4.9 },
                                   new Pet { Name="Whiskers", Age=1.5 },
                                   new Pet { Name="Daisy", Age=4.3 } };

                // Group Pet.Age values by the Math.Floor of the age.
                // Then project an anonymous type from each group
                // that consists of the key, the count of the group's
                // elements, and the minimum and maximum age in the group.
                var query = petsList.GroupBy(
                    pet => Math.Floor(pet.Age),
                    pet => pet.Age,
                    (baseAge, ages) => new
                    {
                        Key = baseAge,
                        Count = ages.Count(),
                        Min = ages.Min(),
                        Max = ages.Max()
                    });

                // Iterate over each anonymous type.
                foreach (var result in query)
                {
                    Console.WriteLine("\nAge group: " + result.Key);
                    Console.WriteLine("Number of pets in this age group: " + result.Count);
                    Console.WriteLine("Minimum age: " + result.Min);
                    Console.WriteLine("Maximum age: " + result.Max);
                }

                /*  This code produces the following output:

                    Age group: 8
                    Number of pets in this age group: 1
                    Minimum age: 8.3
                    Maximum age: 8.3

                    Age group: 4
                    Number of pets in this age group: 2
                    Minimum age: 4.3
                    Maximum age: 4.9

                    Age group: 1
                    Number of pets in this age group: 1
                    Minimum age: 1.5
                    Maximum age: 1.5
                */
            }



.NET Framework

4.5, 4, 3.5에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

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

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

Windows 스토어 앱용 .NET

Windows 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 시스템 요구 사항.
이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

표시:
© 2014 Microsoft. All rights reserved.