목차
C# LINQ 쿼리를 작성하여 데이터 쿼리
표준 쿼리 연산자 확장 메서드
쿼리 구문과 메서드 구문. 의미상 동등한 쿼리
int[] numbers = [ 5, 10, 8, 3, 6, 12 ];
//Query syntax:
IEnumerable<int> numQuery1 =
from num in numbers
where num % 2 == 0
orderby num
select num;
//Method syntax:
IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);
foreach (int i in numQuery1)
{
Console.Write(i + " ");
}
Console.WriteLine(System.Environment.NewLine);
foreach (int i in numQuery2)
{
Console.Write(i + " ");
}
람다 식
이전 예제 조건식(num % 2 == 0)이 메서드 Where(num => num % 2 == 0). 에 인라인 인수 Enumerable.Where 로 전달되는 식이 람다식.
쿼리 작성 가능성
예제 - 쿼리 구문
- 첫 번째 쿼리 식은 where 절과 함께 조건을 적용하여 결과를 필터링 또는 제한하는 방법을 보여 줍니다. 이 식은 값이 7보다 크거나 3보다 작은 소스 시퀀스의 모든 요소를 반환합니다.
- 두 번째 식은 반환된 결과를 정렬하는 방법을 보여 줍니다.
- 세 번째 식은 키에 따라 결과를 그룹화하는 방법을 보여 줍니다. 이 쿼리는 단어의 첫 글자를 기반으로 두 그룹을 반환합니다.
List<int> numbers = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
// The query variables can also be implicitly typed by using var
// Query #1.
IEnumerable<int> filteringQuery =
from num in numbers
where num is < 3 or > 7
select num;
// Query #2.
IEnumerable<int> orderingQuery =
from num in numbers
where num is < 3 or > 7
orderby num ascending
select num;
// Query #3.
string[] groupingQuery = ["carrots", "cabbage", "broccoli", "beans", "barley"];
IEnumerable<IGrouping<char, string>> queryFoodGroups =
from item in groupingQuery
group item by item[0];
예제 - 메서드 구문
List<int> numbers1 = [5, 4, 1, 3, 9, 8, 6, 7, 2, 0];
List<int> numbers2 = [15, 14, 11, 13, 19, 18, 16, 17, 12, 10];
// Query #4.
double average = numbers1.Average();
// Query #5.
IEnumerable<int> concatenationQuery = numbers1.Concat(numbers2);
// Query #6.
IEnumerable<int> largeNumbersQuery = numbers2.Where(c => c > 15);
// var is used for convenience in these queries
double average = numbers1.Average();
var concatenationQuery = numbers1.Concat(numbers2);
var largeNumbersQuery = numbers2.Where(c => c > 15);
// var is used for convenience in these queries
double average = numbers1.Average();
var concatenationQuery = numbers1.Concat(numbers2);
var largeNumbersQuery = numbers2.Where(c => c > 15);
예제 - 혼합된 쿼리 및 메서드 구문
쿼리 #7은 컬렉션이 아닌 단일 값을 반환하므로 쿼리가 즉시 실행
// Query #7.
// Using a query expression with method syntax
var numCount1 = (
from num in numbers1
where num is > 3 and < 7
select num
).Count();
// Better: Create a new variable to store
// the method call result
IEnumerable<int> numbersQuery =
from num in numbers1
where num is > 3 and < 7
select num;
var numCount2 = numbersQuery.Count();
'C# > LINQ' 카테고리의 다른 글
표준 쿼리 연산자 : LINQ를 통한 데이터 변환(C#) (1) | 2024.01.04 |
---|---|
확장명 메서드 (0) | 2024.01.03 |
쿼리 식 기본 사항 (0) | 2023.12.30 |
LINQ 쿼리 소개(C#) (0) | 2023.12.30 |