LINQ

00·2024년 12월 27일

C#

목록 보기
85/149
using System;
using System.Linq;


/*
LINQ:
Language Integrated Query의 약자로, C#에 톱합된 데이터 질의 기능임.
데이터 질의(Query)란, 데이터에 대해 물어본다는 의미.
데이터를 가공하기 전에 필요한 데이터를 찾아내는 일을 도와줌.
컬렉션을 편리하게 다루기 위한 목적으로 만들어진 질의(Query) 언어.
*/


// LINQ를 사용하여 정수 배열에서 짝수를 찾아 오름차순으로 정렬
namespace From
{
    class MainApp
    {
        static void Main(string[] args)
        {
            int[] numbers = { 9, 2, 6, 4, 5, 3, 7, 8, 1, 10 }; 
            // 10개의 정수 값을 가진 numbers 배열을 선언하고 초기화합니다.

            var result = from n in numbers // numbers 배열(데이터 원본) 안에 있는 각 요소를
                                           // n이라는 변수(범위 변수)에 할당하며 쿼리를 시작합니다.
                         where n % 2 == 0 // n을 2로 나눈 나머지가 0인 경우(즉, 짝수인 경우)에만, 요소를 선택합니다.
                         orderby n // 선택된 요소를 n 값을 기준으로 오름차순으로 정렬합니다.
                         select n; // 정렬된 요소를 선택하여 result 변수에 저장합니다.

            foreach (int n in result) // result에 저장된 요소를 순회하며 각 요소를 n이라는 변수에 할당합니다.
                Console.WriteLine($"짝수 : {n}"); // n 값을 "짝수 : {n}" 형식으로 출력합니다.
        }
    }
}


/*
출력 결과

짝수 : 2
짝수 : 4
짝수 : 6
짝수 : 8
짝수 : 10
*/

코드 설명

이 C# 코드는 LINQ를 사용하여 정수 배열에서 짝수를 찾아 오름차순으로 정렬하는 예제입니다. LINQ는 Language Integrated Query의 약자로, C#에서 데이터를 쿼리하는 데 사용되는 강력한 기능입니다.

MainApp 클래스의 Main 메서드에서는 int[] numbers = { 9, 2, 6, 4, 5, 3, 7, 8, 1, 10 };를 통해 10개의 정수 값을 가진 numbers 배열을 선언하고 초기화합니다.

from n in numbersnumbers 배열의 각 요소를 n이라는 변수에 할당하며 쿼리를 시작합니다.

where n % 2 == 0n을 2로 나눈 나머지가 0인 경우, 즉 짝수인 경우에만 요소를 선택합니다.

orderby n는 선택된 요소를 n 값을 기준으로 오름차순으로 정렬합니다.

select n는 정렬된 요소를 선택하여 result 변수에 저장합니다.

foreach (int n in result)result에 저장된 요소를 순회하며 각 요소를 n이라는 변수에 할당합니다.

Console.WriteLine($"짝수 : {n}");n 값을 "짝수 : {n}" 형식으로 출력합니다.

출력 결과

짝수 : 2
짝수 : 4
짝수 : 6
짝수 : 8
짝수 : 10

LINQ에서 요소가 객체인가?

LINQ에서 요소가 객체인지 아닌지는 쿼리 대상이 되는 컬렉션의 타입에 따라 달라집니다.

만약 컬렉션이 int, string, double과 같은 기본 데이터 타입을 저장하는 경우, 요소는 객체가 아닌 입니다.

하지만 컬렉션이 Person, Product와 같은 클래스 타입을 저장하는 경우, 요소는 객체입니다.

예를 들어, 다음 코드에서 numbers 배열의 요소는 정수 값이고, people 리스트의 요소는 Person 객체입니다.

int[] numbers = { 1, 2, 3, 4, 5 };

List<Person> people = new List<Person>()
{
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Jane", Age = 25 },
    new Person { Name = "Mike", Age = 40 }
};

LINQ 쿼리를 사용할 때, from 절에서 지정하는 범위 변수는 컬렉션의 요소를 나타냅니다. 따라서 컬렉션의 요소가 값이면 범위 변수도 값을 나타내고, 컬렉션의 요소가 객체이면 범위 변수도 객체를 나타냅니다.

// numbers 배열에서 짝수를 찾는 쿼리
var evenNumbers = from number in numbers
                  where number % 2 == 0
                  select number;

// people 리스트에서 나이가 30 이상인 사람을 찾는 쿼리
var adults = from person in people
             where person.Age >= 30
             select person;

이 코드에서 evenNumbers 쿼리의 number 범위 변수는 정수 값을 나타내고, adults 쿼리의 person 범위 변수는 Person 객체를 나타냅니다.

0개의 댓글