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 |