본문 바로가기
개발/Unity

Unity) LINQ 쿼리 (using System.Linq)

by 테샤르 2020. 11. 11.

LINQ 쿼리(using System.Linq)

C#에 서도 LINQ를 지원한다.

 LINQ 기술은 개체(LINQ to Objects), 관계형 데이터베이스(LINQ to SQL) 및 XML(LINQ to XML)에 대한 일관성 있는 쿼리 환경을 제공합니다. 쿼리를 작성하는 개발자의 경우 LINQ에서 가장 눈에 잘 띄는 "언어 통합" 부분은 쿼리 식입니다. 쿼리 식은 선언적 쿼리 구문으로 작성됩니다. 쿼리 구문을 사용하면 최소한의 코드로 데이터 소스에 대해 필터링, 정렬 및 그룹화 작업을 수행할 수 있습니다.

 

특정 데이터 코드에 의한 필터링 정렬 및 그룹화를 매우 쉽고 빠르게 할 수 있다.

실제 성능 테스트에서도 많은 효율을 보인다. (일반적인 상황)

 

 

SQL에서 많이 사용하는 문법은 다음 4가지 이다.

 

from ~:  어디에서 데이터에서 찾을 것인가?

where ~: 어떤 조건으로 찾을 것인가?

order by ~: 어떤 항목을 기준으로 정렬할 것인가?

 select ~: 어떤 항목을 추출할 것인가?

 

 

실제 사용한 코드는 다음과 같다.

using System.Linq;


//살아있는 유닛리스트 가져오기
var list = this.m_EnemyList.Where(unit =>unit.GetLive());
return  list.ToList();


//distance 가장 가까운 Enemy 찾기
this.m_EnemyList.OrderBy(t =>Vector3.Distance(playerPos,t.transform.position)).FirstOrDefault();

 

LINQ로 사용할 때의 주의할 점

Avarage, Count 등 몇몇 연산자(orderBy, Reverse)등 같은 질의 연산자들은 원본 시퀀스를 반복하기 때문에 퍼포먼스 면에서 효율이 떨어진다. 성능에 대해서 고민을 하면서 사용해야 한다.

 

참고 URL : [Microsoft C#에서 LINQ쿼리 소개]

 

LINQ 쿼리 소개(C#)

LINQ는 다양한 데이터 원본 및 형식의 데이터 쿼리에 대한 일관된 모델을 제공합니다. LINQ 쿼리에서는 항상 개체를 사용합니다.

docs.microsoft.com

 

 

 

반응형

댓글