방법: 그룹화 작업에서 하위 쿼리 수행(C# 프로그래밍 가이드)
업데이트: 2007년 11월
이 항목에서는 소스 데이터를 그룹으로 순서 정렬하는 쿼리를 만들어 각 그룹에 대한 하위 쿼리를 개별적으로 수행하는 두 가지 방법에 대해 설명합니다. 각 예제에서 기본적인 방법은 newGroup이라는 연속 문자를 사용하여 newGroup에 대한 새로운 하위 쿼리를 생성하여 소스 개체를 그룹화하는 것입니다. 이 하위 쿼리는 외부 쿼리를 사용하여 만든 각각의 새로운 그룹에 대해 실행됩니다. 이 특정 예제에서 마지막 출력은 그룹이 아니라 익명 형식의 기본 시퀀스입니다.
그룹화하는 방법에 대한 자세한 내용은 group 절(C# 참조)을 참조하십시오.
연속에 대한 자세한 내용은 into(C# 참조)를 참조하십시오. 다음 예제에서는 메모리 내 데이터 구조를 데이터 소스로 사용하지만 모든 종류의 LINQ 데이터 소스에 적용되는 동일한 원칙을 사용합니다.
예제
private static void QueryMax()
{
var queryGroupMax =
from student in students
group student by student.Year into studentGroup
select new
{
Level = studentGroup.Key,
HighestScore =
(from student2 in studentGroup
select student2.ExamScores.Average()).Max()
};
int count = queryGroupMax.Count();
Console.WriteLine("Number of groups = {0}", count);
foreach (var item in queryGroupMax)
{
Console.WriteLine(" {0} Highest Score={1}", item.Level, item.HighestScore);
}
}
코드 컴파일
이 예제에는 방법: 개체 컬렉션 쿼리(C# 프로그래밍 가이드)에서 샘플 응용 프로그램에 정의된 개체에 대한 참조가 포함되어 있습니다. 이 메서드를 컴파일하고 실행하려면 동일한 응용 프로그램에서 StudentClass 클래스에 붙여넣고 Main 메서드에서 호출을 추가합니다.
사용자 고유의 응용 프로그램에 이 메서드를 적용하는 경우 LINQ에서는 .NET Framework 버전 3.5를 필요로 하며 프로젝트에는 System.Core.dll에 대한 참조와 System.Linq에 대한 using 지시문이 포함되어야 합니다. LINQ to SQL, LINQ to XML 및 LINQ to DataSet 형식에는 추가 usings 및 참조가 필요합니다. 자세한 내용은 방법: LINQ 프로젝트 만들기를 참조하십시오.