뇌를 자극하는 C# 5.0 15장 연습문제 풀이
뇌를 자극하는 C# 5.0프로그래밍 / 2017. 2. 9. 23:04
1.다음과 같이 배열이 있다고 할 때, Cost 50이상, MaxSpeed는 150 이상인 레코드만 조회하는 LINQ를 작성하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class Car { public int Cost { get; set; } public int MaxSpeed { get; set; } } // Car[] cars = { new Car(){Cost = 56, MaxSpeed = 120}, new Car(){Cost = 70, MaxSpeed = 150}, new Car(){Cost = 45, MaxSpeed = 180}, new Car(){Cost = 32, MaxSpeed = 200}, new Car(){Cost = 82, MaxSpeed = 280} }; var selected =/*Cost가 50이상, MaxSpeed는 150이상인 레코드를 조회하는 LINQ*/; | cs |
구별의 용이함(?)을 위해 Car클래스에 Name을 추가해서 만들었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | namespace Ex15_1 { class Car { public int Cost { get; set; } public int MaxSpeed { get; set; } public string Name { get; set; } } class MainApp { static void Main(string[] args) { Car[] cars = { new Car(){Cost = 56, MaxSpeed = 120, Name = "ABC"}, new Car(){Cost = 70, MaxSpeed = 150, Name = "DEF"}, new Car(){Cost = 45, MaxSpeed = 180, Name = "GHI"}, new Car(){Cost = 32, MaxSpeed = 200, Name = "JKL"}, new Car(){Cost = 82, MaxSpeed = 280, Name = "MNO"} }; var selected = from car in cars where car.Cost >= 50 && car.MaxSpeed >= 150 select car; foreach(var car in selected) Console.WriteLine(car.Name); } } } | cs |
이렇게 푸는게 맞는지 모르겠다.
이렇게 하면 DEF와 MNO가 차례로 출력된다.
난 이렇게 풀었다.
===========================================================================================================
2.다음 코드에서 cars.Where(c=>c.Cost < 60).OrderBy(c=>c.Cost)와 동일한 결과를 반환하는 LINQ를 작성하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Car { public int Cost { get; set; } public int MaxSpeed { get; set; } } // Car[] cars = { new Car(){Cost = 56, MaxSpeed = 120}, new Car(){Cost = 70, MaxSpeed = 150}, new Car(){Cost = 45, MaxSpeed = 180}, new Car(){Cost = 32, MaxSpeed = 200}, new Car(){Cost = 82, MaxSpeed = 280} }; var selected = cars.Where(c => c.Cost < 60).OrderBy(c => c.Cost); | cs |
C# 컴파일러가 번역하는 방식으로 입력되어있다.
주어진 조건은 같으므로 이번에도 Name을 추가해서 풀어보겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | namespace Ex15_2 { class Car { public int Cost { get; set; } public int MaxSpeed { get; set; } public string Name { get; set; } } class MainApp { static void Main(string[] args) { Car[] cars = { new Car(){Cost = 56, MaxSpeed = 120, Name = "ABC"}, new Car(){Cost = 70, MaxSpeed = 150, Name = "DEF"}, new Car(){Cost = 45, MaxSpeed = 180, Name = "GHI"}, new Car(){Cost = 32, MaxSpeed = 200, Name = "JKL"}, new Car(){Cost = 82, MaxSpeed = 280, Name = "MNO"} }; var selected = from car in cars where car.Cost<60 orderby car.Cost select car; foreach(var car in selected) Console.WriteLine(car.Name); } } } | cs |
이렇게 하면 Cost가 60미만 인 Car들을 Cost의 오름차순으로 찍어준다.
고로
JKL
GHI
ABC
이 순으로 콘솔창에 찍어준다.
결과가 같으므로 틀린 방법은 아닐 것 같다.
난 이렇게 풀었다!.!
'뇌를 자극하는 C# 5.0프로그래밍' 카테고리의 다른 글
뇌를 자극하는 C# 5.0 17장 연습문제 풀이 (0) | 2017.02.11 |
---|---|
뇌를 자극하는 C# 5.0 16장 연습문제 풀이 (0) | 2017.02.11 |
뇌를 자극하는 C# 5.0 14장 연습문제 풀이 (0) | 2017.02.06 |
뇌를 자극하는 C# 5.0 13장 연습문제 풀이 (0) | 2017.02.03 |
뇌를 자극하는 C# 5.0 12장 연습문제 풀이 (0) | 2017.02.02 |