LINQ
LINQ(Language Integrated Query)는 C#에서 데이터 쿼리 및 조작을 위한 강력한 기능.
Unity 게임 개발에서도 LINQ를 사용하여 코드를 더 간결하고 효율적으로 만들 수 있다.
LINQ의 주요 특징:
데이터 소스에 대한 통일된 쿼리 구문
컬렉션, 배열, XML 등 다양한 데이터 소스 지원
강력한 필터링, 정렬, 그룹화 기능
코드의 가독성과 유지보수성 향상
주요 Linq 메서드

var evenNumbers = numbers.Where(n => n % 2 == 0);
// Where 메서드를 사용해, 조건을 만족하는 요소들만 반환
n => n % 2 == 0 은, 나머지가 0 이 나와야 하니까 n 은 2,4 와 같은 짝수만 가능.
해당 요소들을 evenNumbers 에 반환
foreach (var number in evenNumbers) { Debug.Log(number); // 출력: 2, 4 }
// evenNumbers의 각 요소(2와 4)를 하나씩 가져오고, 가져온 값은 number에 저장
Log 에, 2 와 4 가 각각 출력됨.

var nameLengths = names.Select(name => name.Length);
// Select 메서드르 사용해, 기존 요소를 다른 데이터로 변경
name => name.Length 이므로, Alice 는 5, Bob은 3, Charlie 은 7로 변경하여
nameLengths 에 해당 요소들을 반환.
foreach (var length in nameLengths) { Debug.Log(length); // 출력: 5, 3, 7 }
// nameLengths 의 각 요소들(5, 3, 7) 을 하나씩 가져오고, 가져온 값들을 length 에 저장.
Log 에, 5, 3, 7 이 각각 출력됨.


Any 함수에서 조건을 하나라도 만족하면, true. 하나도 만족하지 못했다면 false 를 반환.

var sortedNumbers = numbers.OrderBy(n => n);
// OrderBy 함수를 사용했으므로, 각 요소들을 오름차순 으로 정리
정리한 요소들을 sortedNumbers 변수에 할당.
foreach (var number in sortedNumbers) { Debug.Log(number); // 출력: 1, 1, 3, 4, 5 }
// sortedNumbers 의 각 요소들(1, 1, 3, 4, 5) 을 하나씩 가져오고, number 에 저장.
Log 에는 1, 1, 3, 4, 5 가 출력됨.
LINQ 사용 예시(2024_12_05(목) 강의 요약 및 정리(1) 참고

var linqFilter = monsters.Where(e => e is { name: "A", health: >= 30 })
// Where 메서드를 사용하여, 조건에 맞는 요소들만 반환
e is { name: "A", health: >= 30 }
// is 를 사용하여, 패턴 매칭을 진행
name 이 A 이고, health 가 30 이상인 요소들만 선택
new MonsterTest() { name = "A", health = 100 },
new MonsterTest() { name = "A", health = 30 },
그 후에 linqFilter 에 할당.
.OrderByDescending(e => e.health)
// OrderByDescending 함수를 사용해서. 컬랙션을 내림차순으로 정리.
e => e.health 이므로, health 값이 100인 객체가 먼저 오고, 30인 객체가 뒤에 옴.
- { name: "A", health: 100 }
- { name: "A", health: 30 }
.ToList()
ToList 메서드를 사용해서, 지연실행 하는 메서드를, 즉시 실행하고 리스트 타입으로 만듬
(해당 메서드가 없으면 오류가 생길 가능성이 있음)
foreach (var monster in linqFilter)
{
Debug.Log($" Name : {monster.name}, Health : {monster.health}");
}
// linqFilter 의 각 요소들( name: "A", health: 100, name: "A", health: 30) 을 가져오고
monster 에 할당.
Log 에는 " Name : A, Health : 100" , "Name : A, Health : 30" 이 각 각 출력됨
'게임 개발(유니티) > 멋쟁이 사자처럼 3기_회고록' 카테고리의 다른 글
| [멋쟁이사자처럼 유니티 TIL] 2024_12_10(화) 강의 요약 및 정리(1) (0) | 2024.12.10 |
|---|---|
| [멋쟁이사자처럼 유니티 TIL] 2024_12_06(금) 강의 요약 및 정리 (0) | 2024.12.08 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_05(목) 강의 요약 및 정리(1) (0) | 2024.12.05 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_04(수) 강의 요약 및 정리(3) (0) | 2024.12.04 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_04(수) 강의 요약 및 정리(2) (0) | 2024.12.04 |