1. Linq란? 

 LINQ는 SQL 문과 비슷하게 질의식의 추가를 데이터를 편리하게 추출하고 가공하기 위해 사용할 수 있습니다.

 

다음 리스트를 기준으로 예제를 진행합니다.

List<OrderMenu> Menus = new List<OrderMenu>();
Menus.Add(new OrderMenu { MenuId = 1, OrderId = 1, MenuName = "샐러드", MenuCnt = 2 });
Menus.Add(new OrderMenu { MenuId = 2, OrderId = 1, MenuName = "아이스아메리카노", MenuCnt = 4 });
Menus.Add(new OrderMenu { MenuId = 3, OrderId = 1, MenuName = "에그샌드위치", MenuCnt = 1 });
Menus.Add(new OrderMenu { MenuId = 4, OrderId = 1, MenuName = "치킨샌드위치", MenuCnt = 2 });
Menus.Add(new OrderMenu { MenuId = 5, OrderId = 2, MenuName = "짬뽕", MenuCnt = 1 });
Menus.Add(new OrderMenu { MenuId = 6, OrderId = 2, MenuName = "짜장면", MenuCnt = 3 });

 

2. Filtering Operation(필터링 연산자).

: 조건에 따라 시퀀스를 필터링합니다.

 

2-1) Where : 조건에 부합하는 값들을 반환합니다.

//OrderMenu중 OrderId가 1인 IEnumarable<OrderMenu>를 반환합니다
var useWhereMenus = Menus.Where(o => o.OrderId.Equals(1)) 
                                .Where(o => o.MenuCnt > 1);

foreach (var menu in useWhereMenus )  
  Console.WriteLine(JsonConvert.SerializeObject(menu));

//==========================================OUTPUT=========================================
//{"MenuId":1,"OrderId":1,"MenuName":"샐러드","MenuCnt":2,"Options":[]}
//{"MenuId":2,"OrderId":1,"MenuName":"아이스아메리카노","MenuCnt":4,"Options":[]}
//{"MenuId":4,"OrderId":1,"MenuName":"치킨샌드위치","MenuCnt":2,"Options":[]}

2-2) OfType : 타입에 해당하는 값들을 반환합니다.

IList tmpList = new ArrayList();
tmpList.Add(1);
tmpList.Add(2);
tmpList.Add("string");
tmpList.Add(3);
tmpList.Add("salad");

var useOfTypeList = tmpList.OfType<int>();
foreach(var intTypeItem in useOfTypeList) 
  Console.WriteLine(intTypeItem);

//==========================================OUTPUT=========================================
// 1 
// 2
// 3

 

3. Sorting Operators (정렬 연산자)

:집합요소를 오름차순 또는 내림차순으로 정렬합니다.

  • OrderBy : 지정된 필드를 기준으로 오름차순 정렬합니다.
  • OrderByDescending : 지정된 필드를 기준으로 내림차순 정렬합니다.
  • ThenBy : 우선 정렬된 기준값이 같을경우 다음 기준을 토대로 오름차순 정렬합니다.
  • ThenByDescending : 우선 정렬된 기준값이 같을경우 다음 기준을 토대로 내림차순 정렬합니다.
var useOrderBy = Menus.OrderBy(o => o.OrderId) 
                       .ThenByDescending(o=>o.MenuCnt); 
foreach(var menu in useOrderBy) 
  Console.WriteLine(JsonConvert.SerializeObject(menu));

//==========================================OUTPUT=========================================
//{"MenuId":2,"OrderId":1,"MenuName":"아이스아메리카노","MenuCnt":4,"Options":[]}
//{"MenuId":1,"OrderId":1,"MenuName":"샐러드","MenuCnt":2,"Options":[]}
//{"MenuId":4,"OrderId":1,"MenuName":"치킨샌드위치","MenuCnt":2,"Options":[]}
//{"MenuId":3,"OrderId":1,"MenuName":"에그샌드위치","MenuCnt":1,"Options":[]}
//{"MenuId":6,"OrderId":2,"MenuName":"짜장면","MenuCnt":3,"Options":[]}
//{"MenuId":5,"OrderId":2,"MenuName":"짬뽕","MenuCnt":1,"Options":[]}

 

'C#' 카테고리의 다른 글

[C#] Linq 3. 투영 연산자, 정량자 연산자  (0) 2022.01.23
[C#] Linq 2. 그룹 연산자, 조인 연산자  (0) 2022.01.16

+ Recent posts