C#/LINQ

C# LINQ 쿼리를 작성하여 데이터 쿼리

소나무꼴 2024. 1. 1. 17:27

URL

 

C#을 사용하여 LINQ 쿼리 작성 - C#

C#에서 LINQ 쿼리를 작성하는 방법을 알아봅니다.

learn.microsoft.com

 

 

 

 

목차

 

 

 

 

 

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 로 전달되는 식이 람다식.

 

쿼리 작성 가능성

 

예제 - 쿼리 구문

  1. 첫 번째 쿼리 식은 where 절과 함께 조건을 적용하여 결과를 필터링 또는 제한하는 방법을 보여 줍니다. 이 식은 값이 7보다 크거나 3보다 작은 소스 시퀀스의 모든 요소를 반환합니다.
  2. 두 번째 식은 반환된 결과를 정렬하는 방법을 보여 줍니다.
  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