C# LINQ
본문 바로가기
  • 게임 개발자가 되고싶은 구구
게임 개발 공부/C#

C# LINQ

by gugu99 2021. 12. 24.
반응형

안녕하세요!

 

게임개발자가 되기위해 공부하고있는 구구입니다.

오늘은 C#의 LINQ에 대해 알아보도록 하겠습니다.


  • LINQ(Language-Integrated Query)

- 쿼리 기능

- 큰 데이터가 많이 모여있는 경우 사용

 

- from : 어디에서 찾을수 있는 것인지

  • from 범위변수 in 데이터 원본

 

- where : 조건이 무엇인지

  • where 조건식

 

- select : 어떤 것을 가져올 것인지(결과를 선택), 특정형식으로 변환 가능

  • select 범위변수

ex)

var QueryData =
     from data in arrStudents
     where data._id > 200 && data._kor > 50
     select new {
          id = data._id,
          name = data._name,
          total = data._kor + data._eng
      };

위처럼 select 부분에서 특정형식으로 변환해서 QueryData에 저장하는 것이 가능합니다.

 

 

 

 

 

 

 

C#-LINQ-from-where-select-Query-쿼리

LINQ와 람다식을 이용해서 배열에서 100보다 작은 값들을 걸러내는 과정입니다.

코딩할때는 LINQ와 람다식 둘중 마음에 드는걸 하면 되지만 다른사람이 어떠한 방법을 선호할 지 모르기 때문에 둘 다 어떠한 방식으로 코딩하는지 아시는 것이 중요할 것 같습니다.

 

C#-LINQ-from-where-select-Query-쿼리
C#-LINQ-from-where-select-Query-쿼리
C#-LINQ-from-where-select-Query-쿼리

select에서 다음과같이 설정했기 때문에 id = data.id와 같이 간결하게 쓸 수 있습니다.

 

C#-LINQ-from-where-select-Query-쿼리

- orderby : 데이터 정렬

  • orderby 기준이 될 지표 ascending/decending

 

  • 키워드

- ascending 키워드(오름차순)

- decending 키워드(내림차순)

- "," 콤마로 둘 이상의 데이터 정렬

 

 

 

 

 

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending

해당 내용은 sturct Student부분과 Student의 객체생성부분까지는 위에서 썼던 select 코딩내용과 동일합니다.

orderby는 위처럼 orderby를 쓰고 오름차순하거나 내림차순할 기준을 써주면 됩니다.

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending


- group : 데이터 분류 후 그룹화

  • group A by B into C // A: 범위, B: 분류 기준, C: 그룹 변수 //into C는 사용해도되고 안해도 됨.

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group

해당 내용은 sturct Student부분과 Student의 객체생성부분까지는 위에서 썼던 select 코딩내용과 동일합니다.

group을 함으로 인해 QueryData는 2개의 그룹으로 나눠집니다.(이를 true, false로 나눔)

그리고 data.Key라는 것을 이용해서 그룹이 나눠지느 것을 분리해서 출력할 수 있도록 합니다.

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group
C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group
C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group


- join : 두개의 데이터 연결, 내부 조인

  • 내부 조인 : join 범위변수 in 데이터 원본 on A equals B
  • 외부 조인 : join 범위변수 in 데이터 원본 on A equals B into (이름이 같은 경우 집어넣는 곳)

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group-join-외부조인-내부조인
C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group-join-외부조인-내부조인

내부 조인은 동등한 조건에 맞는 데이터만 반환됩니다.

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group-join-외부조인-내부조인
C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group-join-외부조인-내부조인
C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group-join-외부조인-내부조인

외부조인은 동등하지 않지만 기준이 되는 원본(현재 위 코딩에서는 data)에 있는 데이터도 포함이됩니다.

다만 매칭시킬때 gender에 관한 부분이 arrStudents에는 없기 때문에 DefaultIfEmpty를 이용해서 없는 데이터를 채워줄 수 있습니다.

 

C#-LINQ-from-where-select-Query-쿼리-orderby-ascending-decending-group-join-외부조인-내부조인

 

 

 

 

 

 

오늘은 여기까지 하도록 하겠습니다.

반응형

'게임 개발 공부 > C#' 카테고리의 다른 글

C# 쓰레드 1  (0) 2021.12.26
C# 파일처리  (0) 2021.12.25
C# 람다식  (0) 2021.12.23
C# 델리게이트&이벤트  (0) 2021.12.22
C# 예외 처리  (0) 2021.12.21

댓글