2016년 9월 12일 월요일

[C#학원,닷넷학원추천★탑크리에듀][C#링크강좌,Linq쿼리식,OrderBy,Group By,Where]링크쿼리식예제

[C#링크강좌,Linq쿼리식,OrderBy,Group By,Where]링크쿼리식예제

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;

class Customer
{
    public string Name { get; set; }
    public string City { get; set; }
}
public class Test
{
    public static void Main()
    {
        Customer[] customers = {
                                  new Customer() { Name="박길동", City="서울" },
                                  new Customer() { Name="가길동", City="제주" },
                                  new Customer() { Name="최길동", City="서울" },
                                  new Customer() { Name="문길동", City="속초" },
                                  new Customer() { Name="제길동", City="제주" },
                                   new Customer() { Name="하길동", City="제주"},
                                    new Customer() { Name="제길동", City="서울"},
                                   new Customer() { Name="허길동", City="제주"}

                              };

        //City가 서울 이거나 속초인 데이터 이름내림차순 추출
        IEnumerable<Customer> query1 = from cust in customers
                                       where cust.City == "서울" || cust.City == "속초"
                                       orderby cust.Name descending
                                       select cust;

        foreach (Customer c in query1)
        {
            Console.WriteLine(c.Name + "," + c.City);
        }
        Console.WriteLine("------------------");
        
        //City가 서울이고 Name이 박길동인 데이터 추출
        IEnumerable<Customer> query2 = from cust in customers
                                       where cust.City == "서울" && cust.Name == "박길동"
                                       select cust;

        foreach (Customer c1 in query2)
        {
            Console.WriteLine(c1.Name + "," + c1.City);
        }
        Console.WriteLine("------------------");

        // City로 그룹핑, City 내림차순 출력
        IEnumerable<IGrouping<string, Customer>> query3 = from cust in customers
                                       orderby cust.City descending
                                       group cust by cust.City;

       foreach (var cGroup in query3)
       {
            Console.WriteLine(cGroup.Key);
            foreach (Customer c in cGroup)
            {
                Console.WriteLine("    {0}", c.Name);
            }
       }
       Console.WriteLine("------------------");

       //City로 그룹핑, 그룹키(City)로 정렬, 그룹의 개수가 2보다 큰그룹 출력
       var custQuery =  from cust in customers
                        group cust by cust.City into custGroup
                        where custGroup.Count() > 2
                        orderby custGroup.Key
                        select custGroup;

       foreach (var cGroup in custQuery)
       {
           Console.WriteLine(cGroup.Key);
           foreach (Customer c in cGroup)
           {
               Console.WriteLine("    {0}", c.Name);
           }
       }

    }
}

[결과]

최길동,서울
제길동,서울
박길동,서울
문길동,속초
------------
박길동,서울
------------
제주
    가길동
    제길동
    하길동
    허길동
속초
    문길동
서울
    박길동
    최길동
    제길동
------------
서울
    박길동
    최길동
    제길동
제주
    가길동
    제길동
    하길동
    허길동

댓글 없음:

댓글 쓰기