일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- protected
- 접근 제한자
- ScriptableObject
- start
- 모작
- C#
- LateUpdate
- 오브젝트
- 이벤트 함수
- SerializeField
- Update
- Unity
- 불러오기
- 직렬화
- 초기화
- 게임개발
- 죽림고수
- AWAKE
- public
- 저장
- 이동
- 게임제작
- LINQ
- 게임모작
- iNTERNAL
- JSON
- FixedUpdate
- private
- Transform
- OnEnable
- Today
- Total
정명직의 게임개발
[C#] LINQ? 본문
LINQ?
LINQ (Language-Integrated Query)는 C# 언어에 내장된 데이터 질의 기능입니다. SQL같은 쿼리 언어의 기능을 직접 C# 코드에 통합하여, 효율적이고 읽기 쉬운 데이터 검색 및 필터링을 할 수 있게 해줍니다.
LINQ의 기본 연산자
쿼리를 하는데에는 SQL문법을 사용하기 때문에 LINQ는 이러한 SQL의 문법을 가지고 다양한 쿼리를 통해 데이터를 가공하고 집계하는 등에 사용됩니다.
from : 어떤 데이터에서 찾을 것인지
where : 원하는 값을 추출하기 위한 조건
select : 데이터에서 어떤 항목을 추출할 것인지
order by : 어떤 항목을 기준으로정렬할 것인가
LINQ 기본 구조
LINQ 쿼리는 일반적으로 두 가지 형태로 사용됩니다.
- Method Syntax (메서드 구문)
- Query Syntax (쿼리 구문)
아래 예제를 통해 확인해보겠습니다.
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// 메서드 구문
List<int> evenNumbersMethod = numbers.Where(n => n % 2 == 0).ToList();
// 쿼리 구문
List<int> evenNumbersQuery = (from num in numbers
where num % 2 == 0
select num).ToList();
위의 두 LINQ 쿼리 모두 동일한 [2, 4, 6, 8, 10] 짝수만 포함하는 리스트를 반환합니다.
첫 번째 예제는 Linq.Where() 메서드를 사용해서 리스트를 생성하였고, 두 번째 예제는 쿼리 구문을 사용하였습니다.
from : numbers라는 데이터의 각 요소를 LINQ 절에서 num으로 사용할 것이라고 명시
where : 요소 중에 2로 나누었을 때 나머지가 0인 것들을 찾는 조건
select : num을 추출
실전 예제
레벨이 10 초과인 아이템 이름을 가져오는 로직을 LINQ을 사용해서 예를 들어보겠습니다.
class Item
{
public string name;
public int level;
}
class Program
{
static void Main(string[] args)
{
List<Item> items = new List<Item>
{
new Item() { name = "Sword", level = 10},
new Item() { name = "Bow", level = 15},
new Item() { name = "Shield", level = 5},
};
var result = from item in items
where item.level > 10
select item.name;
foreach (var name in result)
Console.WriteLine(name);
}
}
출력 결과는 "Bow" 가 출력되게 됩니다. 위 예제처럼 where 절에는 특정 프로퍼티에 대해 조건을 작성할 수 있으며, select 절에는 원하는 항목만 추출할 수 있습니다.
LINQ의 장 단점
장점
- 가독성 : 반목문, 조건문을 줄일 수 있기 때문에 코드가 단순해집니다.
- 컴파일 타임 체크 : LINQ 쿼리는 컴파일 타임에 체크되므로, 개발 단계에서 버그를 빠르게 찾아낼 수 있습니다.
단점
- 성능 : 간단한 작업에 대해서는 LINQ가 괜찮지만, 복잡한 쿼리에 대해서는 성능 문제가 발생할 수 있습니다.
- 학습 곡선 : LINQ는 강력한 도구이지만, SQL과 다른 구문을 사용하므로 처음에는 학습이 어려울 수 있습니다.
정리
C#의 LINQ는 데이터 조작을 매우 효율적으로 수행할 수 있게 해주는 강력한 도구입니다.
SQL 같은 쿼리 언어를 배우지 않고도, 직관적인 코드로 데이터를 필터링, 정렬, 그룹화하는 등의 작업을 수행할 수 있습니다.
LINQ를 이해하고 익히면 C# 개발에 있어서 많은 이점을 얻을 수 있습니다.
'C# > LINQ' 카테고리의 다른 글
[C#] LINQ Any, All 메서드 (1) | 2023.07.16 |
---|