• LINQ 설명
    • Language Integrated Query
    • 데이터에 대해 질문하고, 그 답에 해당하는 데이터를 찾는 것
    • 데이터 검색에 편리함
    • Example
      • 1
        2
        3
        4
        5
        var 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
        2
        orderby woman.age ascending //오름차순
        orderby woman.age descending //내림차순
        cs
  • select
    • 최종적으로 검색된 데이터를 추출하는 역할
    • 추출된 데이터의 타입은 select절에 지정한 변수의 타입으로 결정됨
    • 무명형식(타입)으로 만들어서 추출할 수도 있다.
    • Example
      • 1
        2
        3
        4
        5
        select 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

+ Recent posts