C#

LINQ GroupBy, OrderBy메소드 사용법

지오준 2021. 7. 17.
반응형

1.LINQ의 GroupBy메소드는 컬렉션(List, Array, Dictionary)의 요소를 그룹으로 매칭할 경우에 사용합니다.

샘플코드로는 대륙별로 국가의 점수를 표시할경우를 준비했습니다.

//샘플클래스
class Test
{
	public string GroupName { get; set; }
	public string ContryName { get; set; }
	public int Points { get; set; }
}

static void Main(string[] args)
{
	//GroupBy, OrderBy에 사용될 샘플데이터
	var result = new List<Test>() {
		new Test {GroupName = "Asia", ContryName = "South Korea", Points = 90},
		new Test {GroupName = "Europe", ContryName = "Germany", Points = 80,},
		new Test {GroupName = "North America", ContryName = "UnIted States", Points = 70},
		new Test {GroupName = "Asia", ContryName = "Malaysia", Points = 60},
		new Test {GroupName = "Europe", ContryName = "Spain", Points = 50},
		new Test {GroupName = "Africa", ContryName = "Nigeria", Points = 80},
		new Test {GroupName = "Asia", ContryName = "Singapore", Points = 70},
	};

	//대륙별로 그룹매칭
	var query = result.GroupBy(x => x.GroupName);

	//그룹매칭 결과 루프
	foreach (var group in query)
	{
		//대륙별로 나눠서 표시
		Console.WriteLine(" " + group.Key);

		//해당하는 대륙별 국가정보 표시
		foreach (var item in group)
		{
			Console.WriteLine($" {{0}}:{{1}}Points", item.ContryName, item.Points);
		}
		Console.WriteLine("");
	}
	Console.ReadKey();
}

결과값

2.LINQ의 OrderBy메소드는 컬렉션(List, Array, Dictionary)의 요소의 정렬을 정할때 사용합니다.

샘플코드로는 국가별 점수의 오름차순과 내림차순을 준비했습니다.

//샘플클래스
class Test
{
	public string GroupName { get; set; }
	public string ContryName { get; set; }
	public int Points { get; set; }
}

static void Main(string[] args)
{
	//GroupBy, OrderBy에 사용될 샘플데이터
 	var result = new List<Test>() {
		new Test {GroupName = "Asia", ContryName = "South Korea", Points = 90},
 		new Test {GroupName = "Europe", ContryName = "Germany", Points = 80,},
 		new Test {GroupName = "North America", ContryName = "UnIted States", Points = 70},
 		new Test {GroupName = "Asia", ContryName = "Malaysia", Points = 60},
		new Test {GroupName = "Europe", ContryName = "Spain", Points = 50},
		new Test {GroupName = "Africa", ContryName = "Nigeria", Points = 80},
		new Test {GroupName = "Asia", ContryName = "Singapore", Points = 70},
	};

	// 점수별 오림차순
	var query2 = result.OrderBy(x => x.Points);

	Console.WriteLine(" Query2");
	foreach (var item in query2)
	{
		Console.WriteLine($" ({{0}}){{1}}:{{2}}Points", item.GroupName, item.ContryName, item.Points);
	}
	Console.WriteLine("");

	// 점수별 내림차순
	var query3 = result.OrderByDescending(x => x.Points);

	Console.WriteLine(" Query3");
	foreach (var item in query3)
	{
		Console.WriteLine($" ({{0}}){{1}}:{{2}}Points", item.GroupName, item.ContryName, item.Points);
	}
	Console.WriteLine("");

	Console.ReadKey();
}

결과값

LinqSample4.zip
0.18MB

반응형

'C#' 카테고리의 다른 글

LINQ Distinct, Skip, Take메서드 사용법  (0) 2021.07.21
LINQ Any, All메서드 사용법  (0) 2021.07.18
LINQ Select, Where메서드 사용법  (2) 2021.07.15
LINQ 쿼리 작성하기  (0) 2021.07.12
LINQ사용에 대한 정보(기본사항)  (0) 2021.07.11

댓글