LINQ to SQL : orderby

orderby는 LINQ 쿼리에서 데이타를 올림차순(ascending) 혹은 내림차순으로(descending) 소트하는 역활을 한다. 아래 예제는 Orders 테이블에서 Frans 고객의 자료를 주문날짜 올림차순으로 정렬해 가져오는 예이다.

예제

MyDBDataContext db = new MyDBDataContext();
var fransOrders = from ord in db.Orders                              
                  where ord.Customer_ID == "FRANS"
                  orderby ord.Order_Date ascending
                  select ord;



LINQ to SQL : Anonymouse Type의 생성

위의 예제에서 select문은 from에 있는 변수 ord를 그대로 리턴했는데, 이는 전체 Row를 통째로 Select할 때 사용하는 방식이다. 만약 한 필드만 리턴한고 싶다면, select ord.Order_ID;와 같이 할 수 있다. 하지만, 두 필드 이상이 필요하거나, 새로운 필드를 조합해서 만들어 내는 경우는 select new를 이용하여 Anonymous Type을 만들어 주어야 한다. 아래 예는 Orders테이블의 기존 필드들을 변형하여 새로운 Anonymous Type을 정의한 예이다.

예제

MyDBDataContext db = new MyDBDataContext();

// new {...} 를 사용하여 Anonymouse Type을 정의
var fransOrders = from ord in db.Orders
                  where ord.Customer_ID == "FRANS"                  
                  select new
                  {
                      Id = ord.Order_ID,
                      City = ord.Ship_City.ToLower()
                  };

foreach (var o in fransOrders)
{        
    listBox1.Items.Add(o);
}