Linq를 더 유용하게 사용하는 방법으로는 임의로 만든 클래스의 속성을 제어할 때 더 유용하게 사용할 수 있습니다.
아래의 클래스와 예시를 이용하여 Linq를 효과적으로 사용할 수 있는 방법에 대해 알아보겠습니다.
Food.cs
public class Food
{
public int hotdog { get; set; }
public int pizza { get; set; }
public int chicken { get; set; }
public List<string> drink = new List<string>();
}
public class Sample
{
Food jam_store = new Food();
jam_store.hotdog = 500;
jam_store.pizza = 700;
jam_store.chicken = 1000;
jam_store.drink = new List<string>() { "Coke", "Sprite", "Fanta" };
Food son_store = new Food();
son_store.hotdog = 100;
son_store.pizza = 300;
son_store.chicken = 700;
son_store.drink = new List<string>() { "Grape juice", "Apple juice", "Coke" };
Food kim_store = new Food();
kim_store.hotdog = 900;
kim_store.pizza = 1400;
kim_store.chicken = 2000;
kim_store.drink = new List<string>() { "Beer", "Soju", "Wine" };
List<Food> store_list = new List<Food>();
store_list.Add(jam_store);
store_list.Add(son_store);
store_list.Add(kim_store);
}
Food 클래스에는 int형도 있고 List<string>형도 혼재되어 있습니다.
이런 내부의 속성들을 Linq를 이용하면 간결하게 속성값을 읽어 작업할 수 있습니다.
Select 조건처리
Select함수로 x의 hotdog를 선택하여 합계를 처리합니다.
여기서 x는 Food클래스를 뜻하며 x.hotdog는 Food클래스의 hotdog속성만 선택한다는 의미이며, Sum으로 hotdog의 합계를 처리합니다.
// 결과값 : 1500
int sum_hotdog = store_list.Select(x => x.hotdog).Sum();
Where 조건처리
예시1
store_list에서 hotdog가 700 미만인 값을 선택한다는 의미이며, jam_store, son_store만 선택됩니다.
List<Food> temp1 = store_list.Where(x => x.hotdog < 700).ToList();
예시2
store_list에서 hotdog가 700 미만이고 chicken이 700초과인 값을 선택한다는 의미이며, jam_store만 선택됩니다
List<Food> temp2 = store_list.Where(x => x.hotdog < 700 && x.chicken > 700).ToList();
예시3
store_list에서 drink리스트 중에 Coke가 있는 Food클래스만 선택하여, 선택된 Food클래스의 pizza속성을 합계처리 합니다.
즉 jam_store, son_store의 pizza속성만 합계처리되어 결과값이 나오게 됩니다.
// 결과값 : 1000
int temp3 = store_list.Where(x => x.drink.Contains("Coke")).Select(x => x.pizza).Sum();
OrderBy 조건처리
store_list에서 각각의 Food클래스 중 hotdog의 값을 비교하여 orderby처리 합니다.
다른값은 무시된 채 hotdog의 값만으로 asc정렬 처리 됩니다.
desc 정렬 시 OrderByDescending함수를 이용할 수 있습니다.
List<Food> temp_food4 = store_list.OrderBy(x => x.hotdog).ToList();
'C# > Linq' 카테고리의 다른 글
C# - Linq의 기본 사용법 (0) | 2021.08.13 |
---|
댓글