LINQ - 제한 연산자

링큐:   데이터에 대해 질문하는 언어

데이터에 대해 질문하고, 그 답에 해당하는 데이터를 찾는 것이다.

그과정을 편리하게 해준다

 from:

데이터를 검색할 범위를 지정해 주어야 한다.

모든 LINQ 쿼리식(Query Expression)은 반드시 from 으로 시작해야 한다. 

from절의 작성 형식은 foreach문과 거의 비슷하다.

Ex)   foreach( var element in array )     ==     from element in array

※ foreach 문과 from 절의 element 변수의 차이점

foreach의 element 변수에는 실제로 array의 데이터가 저장된다.

하지만 LINQ에서는 element 변수에 데이터가 저장되지 않고, 

단순히 'array에 존재하는 요소'라는 의미로만 사용된다.





from에서 사용가능한 타입은 IEnumerable<T> 인터페이스를 상속하는 타입이다.

C#에서의 배열이나 컬렉션등은 모두 IEnumerable<T>을 상속하기 때문에 

배열이나 컬렉션 타입이라면 전부 사용가능하다.

IEnumerator : 컬렉션,배열 을 단순히 반복하고 지원해줍니다.

Ienumerator 참고사이트:

출처: <http://j07051.tistory.com/577>

Where:

범위 내에서 데이터를 걸러내는 필터 역할을 한다.

Orderby:

데이터를 정렬해주는 연산자이다.(기본 오름차순 acsending)

Select:

최종적으로 검색된 데이터를 추출하는 역할을 한다.

그외 링크 연산자:

SelectMany: where두번쓴 2중포문같은 느낌.

List<Bouquet> bouquets = new List<Bouquet>() {

        new Bouquet { Flowers = new List<string> { "sunflower""daisy""daffodil"

"larkspur" }},

        new Bouquet{ Flowers = new List<string> { "tulip""rose""orchid" }},

        new Bouquet{ Flowers = new List<string> { "gladiolis""lily""snapdragon"

"aster""protea" }},

        new Bouquet{ Flowers = new List<string> { "larkspur""lilac""iris""dahlia" }}

    };

var result = bouquets.SelectMany(b => b.Flowers);

 

foreach (var f in result)

{

    Console.Write(f + ", ");

}

결과:

sunflower, daisy, daffodil, larkspur, tulip, rose, orchid, gladiolis, lily, snapdragon, aster, protea, larkspur, lilac, iris, dahlia,

 

Take(n): 0 인덱스부터 n-1 인덱스까지 출력.

Skip(n): n 인덱스부터 끝까지 출력.

TakeWhile(n => n < 6) : 인덱스를 탐색하면서 숫자가 6보다 크거나 같으면 그만 출력.

SkipWhile((n, index) => n >= index): 인덱스보다 그값이 미만일때부터 끝까지 출력.


참고사이트:

https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

101-LINQ-Samples

 


'C#, ASP.NET, CORE, MVC' 카테고리의 다른 글

[C#]Thread 개요 및 구성요소 사용하는방법  (0) 2020.02.23
[C#] 기타용어 및 개념  (0) 2018.07.20
[C#] Lamda(람다식)  (0) 2018.07.20
[C#] Generics 일반화 프로그래밍  (0) 2018.07.20
[C#] 기초문제1  (0) 2018.07.19

+ Recent posts