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;
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);
}
// 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);
}