본문 바로가기
C#/Linq

C# - Linq의 기본 사용법

by 개발 그리고 게발 2021. 8. 13.
728x90

Linq를 이용하면 쿼리로 사용가능한 기능을 C#언어에서 바로 사용할 수 있습니다. 프로시저 호출을 할 경우 프로시저에서 집계함수를 사용하지 않고 서버사이드에서 집계함수를 사용함으로서 프로시저는 단순 데이터 조회만하게 만들어서 좀 더 단순하게 프로시저를 사용할 수 있도록 해주며, 서버사이드에서 집계의 편리함을 더해줍니다.

 

 


Linq는 제너릭 형식 뿐만아니라 IENumuerable 인터페이스를 사용하는 다른 형식들도 모두 사용이 가능합니다.


 

 

Linq로 다양한 타입의 데이터를 다룰 수 있지만 기본으로 int, string형식에 대해서 알아보겠습니다.

 

 

기본 집계함수(Min, Max, Avg)

최소값, 최대값, 평균값 산출함수

List<int> lst = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };

// 결과값 : 1
int min = lst.Min();

// 결과값 : 7
int max = lst.Max();

// 결과값 : 4
double avr = lst.Average();

 

 

Sum

리스트의 값들의 합계를 구합니다.

람다식을 통해서 덧셈을 할 값을 명확히 지정할 수 있습니다.

아래의 경우에 리스트의 요소가 숫자밖에 없으므로 x 는 각 숫자들을 뜻합니다.

List<int> lst = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };

// 결과값 : 28
int sum = lst.Sum();

// 결과값 : 28
int sum2 = lst.Sum(x => x);

 

 

Where

특정 조건의 요소만 찾아서 걸러냅니다. 쿼리의 Where문과 동일한 효과를 발휘합니다.

List<int> lst = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };

// 결과값 : 2, 4, 6
List<int> two = lst.Where(x => (x % 2) == 0).ToList();

// 결과값 : 3
int two_cnt = lst.Where(x => (x % 2) == 0).Count();

// 결과값 : 5, 6, 7
List<int> more_four = lst.Where(x => x > 4).ToList();

// 결과값 : 3
int four_cnt = lst.Where(x => x > 4).Count();

 

First, FirstOrDefault

First - 첫번째 요소만을 찾아냅니다

FirstOrDefault - 첫번째 요소만을 찾아내며, 첫번째 요소도 없을 경우 해당 형식의 기본값을 return합니다.

(nullable형식일 경우 null을 return)

 

List<int> lst = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };
List<string> str_lst = new List<string> { "Tim", "Elen", "Mike", "Suji" };

// 결과값 : 1
int first = lst.First();
int first_df = lst.FirstOrDefault(x => x < 5);

// 결과값 : 0
int first_df = lst.FirstOrDefault(x => x > 40);

// 결과값 null
string str_first_df = str_lst.FirstOrDefault(x => x == "Tommy");

 

 

Take

N개의 요소만을 가져옵니다

List<int> lst = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };

// 결과값 : 1, 2, 3
List<int> new_lst = lst.Take(3).ToList();

 

 

OrderBy, OrderByDescending

리스트의 OrderBy처리를 하며 OrderBy - asc(오름차순), OrderByDescending - desc(내림차순) 로 정렬합니다.

파라미터로 람다식을 이용하여 정렬할 요소를 지정해야 합니다.

List<int> lst = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };

// 결과값 : 1, 2, 3, 4, 5, 6, 7
List<int> asc_lst = lst.OrderBy(x => x).ToList();

// 결과값 : 7, 6, 5, 4, 3, 2, 1
List<int> desc_lst = lst.OrderByDescending(x => x).ToList();
728x90

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

C# - 클래스를 이용한 Linq의 사용법  (0) 2021.08.19

댓글