namespace UnityGameDevelopment.Day13 {
public class Outline {
public static string Chapter1 = "LINQ";
}
}
1. LINQ
LINQ(Language INtegrated Query)란 질의하여 데이터 집합에서 원하는 데이터를 빠르고 편리하게 추출하는 방식입니다. LINQ는 C# 3.0부터 추가된 문법이며, 가독성이 좋고 유지 보수하기 좋습니다.
질의 방식
LINQ는 쿼리 구문과 메서드 구문이 있습니다.
쿼리 구문은 SQL과 비슷한 문법 키워드로 질의하여 데이터를 추출할 수 있습니다. 메서드 구문은 메서드 호출로 데이터를 추출할 수 있게 합니다.
구문
from은 어떤 데이터에서 원하는 값을 추출할 건지를 설정할 수 있고, where은 원하는 값을 추출하기 위한 조건을 설정합니다. select는 데이터에서 어떤 항목을 추출할 건지를 설정합니다.
예제
int[] numbers = new int[10];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = Random.Range(0, 100);
}
var methodSyntaxResult = numbers
.Where(number => number % 2 == 0)
.OrderBy(number => number)
.Select(number => number);
var querySyntaxResult = from number in numbers
where number % 2 == 0
orderby number
select number;
numbers를 랜덤하게 초기화합니다. 여기서 짝수를 뽑아 정렬하는 예제입니다.
실습 및 응용
▶ LINQ 집계 함수 사용해보기
int[] numbers = new int[10];
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = Random.Range(0, 100);
}
Debug.Log(numbers.Count());
foreach (var number in numbers)
{
Debug.Log(number);
}
Debug.Log(numbers.Sum());
Debug.Log(numbers.Average());
Debug.Log(numbers.Min());
Debug.Log(numbers.Max());
Count 함수는 배열의 요소 수를 반환합니다.
Sum, Average, Min, Max 함수는 각각 배열 요소의 합, 평균, 최소, 최대를 반환합니다.
▶ LINQ 집합 연산 함수 사용해보기
int[] numbers1 = new int[10];
int[] numbers2 = new int[10];
for (int i = 0; i < numbers1.Length; i++)
{
numbers1[i] = Random.Range(0, 100);
}
for (int i = 0; i < numbers2.Length; i++)
{
numbers2[i] = Random.Range(0, 100);
}
PrintEnumerable(numbers1);
PrintEnumerable(numbers2);
PrintEnumerable(numbers1.Union(numbers2));
PrintEnumerable(numbers1.Intersect(numbers2));
PrintEnumerable(numbers1.Except(numbers2));
PrintEnumerable(numbers1.Distinct());
PrintEnumerable(numbers2.Distinct());
/*
void PrintEnumerable(IEnumerable enumerable)
{
string result = "";
foreach (var item in enumerable)
{
result += $"{item}, ";
}
Debug.Log(result);
}
*/
Union 함수는 두 배열을 합집합한 결과를 반환합니다.
Intersect 함수는 두 배열을 교집합한 결과를 반환합니다.
Except 함수는 두 배열을 차집합한 결과를 반환합니다.
Distinct 함수는 동일한 값을 가진 중복 요소가 없도록 만듭니다.
'멋쟁이사자처럼 > 유니티 게임 개발 3기' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 TIL 회고] 유니티 게임 개발 3기 18일차 (0) | 2024.12.13 |
---|---|
[멋쟁이사자처럼 부트캠프 TIL 회고] 유니티 게임 개발 3기 12일차 (0) | 2024.12.04 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 유니티 게임 개발 3기 11일차 (0) | 2024.12.03 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 유니티 게임 개발 3기 10일차 (0) | 2024.12.02 |
[멋쟁이사자처럼 부트캠프 TIL 회고] 유니티 게임 개발 3기 9일차 (0) | 2024.11.29 |