- LINQ 설명
- Language Integrated Query
- 데이터에 대해 질문하고, 그 답에 해당하는 데이터를 찾는 것
- 데이터 검색에 편리함
- Example
- 1
2
3
4
5var women =from woman in womanList // wamanList에서 (여자인가?)where woman.age > 20 // 20세가 넘는 성인을 (성인인가?)orderby woman.age // 나이 순으로 정렬하여 (나이가 어린가?)select woman; // 배열 데이터로 추출한다.cs
- from
- 데이터를 검색하기 위해 검색할 범위를 지정해주는 역할
- LINQ 쿼리식 (Query Expression) 은 반드시 from 으로 시작해야함
- foreach 문과 거의 비슷
- foreach ( var element in elementList ) == from element in elementList
- foreach 문과 from 절의 element 변수의 차이점
- foreach의 element 변수에는 실제로 elementList의 데이터가 저장된다.
하지만 LINQ에서는 element 변수에 데이터가 저장되지 않고,
단순히 'elementList에 존재하는 요소'라는 의미로만 사용된다. - from 에서 사용가능한 타입은 IEnumerable<T> 인터페이스를 상속하는 타입
C#에서의 배열이나 컬렉션 등은 모두 IEnumerable<T>을 상속하기 때문에
배열이나 컬렉션 타입이라면 전부 사용가능하다.
- where
- from으로 검색 범위를 지정하였다면, where은 범위 내에서 데이터를 걸러내는 필터 역할
- orderby
- orderby는 걸러진 데이터를 정렬해주는 연산자
- 기본값으로 오름차순 정렬을 사용함
- 가독성을 위해서 오름차순과 내림차순을 명시해주는 것이 좋다.
- Example
- 1
2orderby woman.age ascending //오름차순orderby woman.age descending //내림차순cs
- select
- 최종적으로 검색된 데이터를 추출하는 역할
- 추출된 데이터의 타입은 select절에 지정한 변수의 타입으로 결정됨
- 무명형식(타입)으로 만들어서 추출할 수도 있다.
- Example
- 1
2
3
4
5select woman; //Woman형 배열 데이터 추출select woman.name; //String형 name 배열 데이터 추출select new { title = "성인여자", name = woman.name };//무명 타입의 배열데이터 추출cs
- 링크를 사용하기 위해서는 System.Linq 네임스페이스를 추가해주어야 함
Example
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 31 32 33 | class Woman { public string name {get; set;} public int age {get; set;} } class MainApp { static void Main(string[] args) { Woman[] womanList = { new Woman() { name = "A", age = 24 }, new Woman() { name = "B", age = 20 }, new Woman() { name = "C", age = 32 }, new Woman() { name = "D", age = 20 }, }; var Women = from woman in womanList where woman.age > 20 orderby woman.age ascending slect new { title = "검색 결과", name = woman.name }; foreach(var woman in Women) { Console.WriteLine("{0}: {1}", woman.title, woman.name); } } } | cs |
'프로그래밍 노트 > ASP.NET' 카테고리의 다른 글
.NET Framework 버전별 정리 (0) | 2017.03.29 |
---|---|
IIS Architecture (정리 진행중) (0) | 2017.03.28 |
숫자 범위에 Switch문 사용하기 (0) | 2015.12.21 |
데이터 캐시 이용하여 특정IP 연속 접속 차단하는 방법 (0) | 2015.11.30 |
[C#] 별도의 서버에서 iOS게임센터 회원 인증하는 방법 (0) | 2015.08.27 |