티스토리 뷰

C# Linq (from in select 구문, orderby)

리스트 등의 컬렉션에서 조건에 맞는 데이터를 추출하는 코드가 자주 사용되기 때문에 개발된 것이 바로 Linq(*쿼리)이다. 그래서 전형적으로 반복적으로 사용되는 코드를 좀 더 줄일 수 있게 해줍니다.

*쿼리:정보 수집에 대한 요청에 쓰이는 컴퓨터 언어

C# linq

 예를 들어서 위와 같은 코드는 input1이라는 리스트(list)컬렉션에 있는 데이터 중에서 짝수만 output1에 담아주는 코드인데 이런 것이 자주 사용되다보니,

from in select 구문

위 와 같이 3줄로 줄여줄 수 있습니다. 이 구문을 from in select 구문이라고 하는데, 반드시 모든 Linq쿼리는 from, in, select 키워드를 포함시켜야합니다.

from 변수이름(맘대로) in 컬렉션이름
select 결과에 넣을 데이터

위 와 같은 형식으로 해주시면되겠습니다. 이때  where구문을 사용해서 조건을 정해줄 수 있습니다.

whele 조건식

을 통해서 조건을 정해주시면 해당 조건에 맞는 값으로 데이터가 생성됩니다.

정렬시키기

정렬방법출력결과

위에 보이는 orderby구문을 사용해주시면 정렬을 해서 데이터를 담을 수 있게됩니다. 기본값(default)은 오름차순(ascending)이며, 제가 결과로 보인 것은 descending(내임차순) 이기 때문에 큰 숫자 부터 출력된 것을 알 수 있습니다.

타입으로 왜 var를 사용하는가

 Linq구문에서 생성되는 데이터의 타입을 받을때 알아서 정해주는 var를 사용했는데, 이는 select구문에 따라서 데이터 형이 바뀔 수 있기 때문입니다. 그래서 안정적으로 var를 사용하는 것이죠. 하지만 위와 같은 코드에서는 예를 들면 var대신에 IEnumerable<int> 라는 인터페이스<제너릭>을 사용해서 값을 받아줄 수 있습니다. 그러나 var를 사용하는 것이 안정적이고 편합니다.

 이때 IEnumberable 인터페이스는 지정된 형식의 컬렉션을 단순하게 반복할 수 있게 해주는 열거자를 노출합니다. (이건 뭔말인지 잘 모르겠군요저도. 그냥 편하게 열거용 사용할라고 만들어놓은 인터페이스 같습니다. 아시는분 덧글로 알려주세요.)

그럼 매서드에서 반환을 못하는가

 var키워드를 매서드의 반환형으로 사용할 수 없기 때문에 그럼 매서드에서는 사용이 불가능한 것일까? 이때는 바로 형변환을 해주는 매서드를 사용한다. 예를들어서 ToArray<int>() 또는 ToList<int>()가 있을 것이다.

매서드에서의 반환방법

 글로는 잘 이해가 안될 까바 위 코드를 참고하면 이해가 쉽게 될 것 같아서 첨부합니다.

 사실 간단한 예시만 봐서 그런지 아직까지 이게 그렇게 까지 쓸모가 있을 지는 모르겠지만, 역시 알아두면 언젠간 쓰일 수도 있기 때문에 알아두시면 좋을 것 같습니다.

[java] import 키워드 (외부 패키지 클래스 사용하는법)

 한국영화 기억의밤 다시보기 (한국판 겟아웃?)

 바이낸스 가입방법 (홈페이지, 준비물 이메일 끝)

댓글
최근에 올라온 글
최근에 달린 댓글
네이버 이웃추가
«   2024/04   »
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
글 보관함