C#

LINQ 쿼리 작성하기

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

C#에서 LINQ 쿼리를 작성방법은 아래와 같습니다.

①쿼리 구문

②메서드 구문

③쿼리와 메서드를 구문을 혼용

 

첫번째 쿼리구문은 이용해서 쿼리식을 작성하는 방법을 설명하겠습니다.

// Query #1.
List<int> numbers = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0, 11, 10, 12 };

IEnumerable<int> filteringQuery =
	from num in numbers
	where num < 3 || num > 7
	select num;

Console.WriteLine(" Query1 Result");
foreach (int number in filteringQuery)
{
	Console.WriteLine(" " + number);
}

// Query #2.
IEnumerable<int> orderingQuery =
	from num in numbers
	where num < 3 || num > 7
	orderby num ascending
	select num;

Console.WriteLine(" Query2 Result");
foreach (int number in orderingQuery)
{
	Console.WriteLine(" " + number);
}

// Query #3.
string[] groupingQuery = { "carrots", "cabbage", "broccoli", "beans", "barley", "cat", "dog" };
IEnumerable<IGrouping<char, string>> queryFoodGroups =
	from item in groupingQuery
	group item by item[0];

Console.WriteLine(" Query3 Result");
foreach (var animal in queryFoodGroups)
{
	Console.WriteLine(" " + animal.First());
}

결과값

두번째로는 메소드를 호출해서 작성하는법으로 일반적으로는 숫자를 반환하는 Sum, Max, Min, Average등이 있습니다.

List<int> numbers1 = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
List<int> numbers2 = new List<int>() { 15, 14, 11, 13, 19, 18, 16, 17, 12, 10 };

// Query #4.
double average = numbers1.Average();
Console.WriteLine(" Query4 Result");
Console.WriteLine(" average = " + average);

// Query #5.
double sum = numbers2.Sum();
Console.WriteLine(" Query5 Result");
Console.WriteLine(" sum = " + sum);

// Query #6.
double max = numbers1.Max();
Console.WriteLine(" Query6 Result");
Console.WriteLine(" max = " + max);

// Query #7.
double min = numbers2.Min();
Console.WriteLine(" Query7 Result");
Console.WriteLine(" min = " + min);

결과값

마지막으로 쿼리와 메서드의 혼합으로 작성하는 법을 알아보도록 하겠습니다.

// Query #8.
int numCount1 =	(from num in numbers1 where num < 3 || num > 7
                select num).Count();
    
IEnumerable<int> numbersQuery =
                from num in numbers1
                where num < 3 || num > 7
                select num;

int numCount2 = numbersQuery.Count();
Console.WriteLine(" Query8 Result");
Console.WriteLine(" count = " + numCount2);

결과값

LinqSample2.zip
0.18MB

반응형

댓글