dnrkckzk 초보 유니티 개발자 개발하면서 겪는 어려움들을 해결했을 때, 인터넷 돌아다니는 흥미 있는 글 있을 때, 저장하고 공유하기 위한 공간.

카테고리

전체보기 (39)
Unity Tip (28)
뇌를 자극하는 C# 5.0.. (9)
C# (1)
Total25,684
Today3
Yesterday51

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


이 순으로 콘솔창에 찍어준다.


결과가 같으므로 틀린 방법은 아닐 것 같다.


난 이렇게 풀었다!.!

Posted by dnrkckzk

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함