LINQ로 사용자 정의 제네릭 개체 데이터 다루기
이번에는 LINQ를 사용하여 특정 클래스 형태의 컬렉션 데이터를 다루는 여러 가지 사용법을 알아보겠습니다. 다음 내용을 C# 인터렉티브에서 단계별로 실행해 보세요. 프로젝트 기반 소스는 LinqCollectionDemo.cs 파일입니다.
> class Car . { . public string Make { get; set; } . public string Model { get; set; } . public int Year { get; set; } . } > class NewType . { . public string Maker { get; set; } . } > > List<Car> cars = new List<Car>() { //컬렉션 이니셜라이저를 사용하여 데이터 담기 . new Car() { Make = "Camper", Model = "Camper1", Year = 2015 }, . new Car() { Make = "Camper", Model = "Camper3", Year = 2016 }, . new Car() { Make = "SUV", Model = "AAA", Year = 2017 }, . new Car() { Make = "SUV", Model = "BBB", Year = 2018 }, . new Car() { Make = "SUV", Model = "CCC", Year = 2019 }, . new Car() { Make = "SUV", Model = "DDD", Year = 2020 } . }; > > //LINQ를 사용해서 Camper만 출력: select * from cars where make = 'Camper' > var campers = from car in cars . where car.Make == "Camper" . select car; > campers Enumerable.WhereListIterator<Submission#4.Car> { Submission#4.Car { Make="Camper", Model="Camper1", Year=2015 }, Submission#4.Car { Make="Camper", Model="Camper3", Year=2016 } } > > //2015년도 이후 출시된 자동차 . where car.Year >= 2015 . select car; > newCars Enumerable.WhereListIterator<Submission#4.Car> { Submission#4.Car { Make="Camper", Model="Camper1", Year=2015 }, Submission#4.Car { Make="Camper", Model="Camper3", Year=2016 }, Submission#4.Car { Make="SUV", Model="AAA", Year=2017 }, Submission#4.Car { Make="SUV", Model="BBB", Year=2018 }, Submission#4.Car { Make="SUV", Model="CCC", Year=2019 }, Submission#4.Car { Make="SUV", Model="DDD", Year=2020 } } > > var orderedCars = from car in cars //가장 최근에 출시된 자동차부터 정렬 . orderby car.Year descending . select car; > orderedCars OrderedEnumerable<Submission#4.Car, int> { Submission#4.Car { Make="SUV", Model="DDD", Year=2020 }, Submission#4.Car { Make="SUV", Model="CCC", Year=2019 }, Submission#4.Car { Make="SUV", Model="BBB", Year=2018 }, Submission#4.Car { Make="SUV", Model="AAA", Year=2017 }, Submission#4.Car { Make="Camper", Model="Camper3", Year=2016 }, Submission#4.Car { Make="Camper", Model="Camper1", Year=2015 } } > > var newObjects = from car in cars //LINQ로 새로운 개체 형식으로 반환 . orderby car.Year ascending . select new NewType { Maker = car.Make }; > newObjects Enumerable.WhereSelectEnumerableIterator<Submission#4.Car, Submission#5.NewType> { Submission#5.NewType { Maker="Camper" }, Submission#5.NewType { Maker="Camper" }, Submission#5.NewType { Maker="SUV" }, Submission#5.NewType { Maker="SUV" }, Submission#5.NewType { Maker="SUV" }, Submission#5.NewType { Maker="SUV" } }