본문 바로가기
C#/수업내용

[ C# 10일차 ] LINQ와 익명형식

by 왹져박사 2023. 1. 12.
728x90
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study11
{
    class App
    {
        //생성자
        public App()
        {
            Console.WriteLine("App");

            Item[] items =
            {
                new Item(){Name="장검", Damage=10},
                new Item(){Name="단검", Damage=5},
                new Item(){Name="창", Damage=11},
                new Item(){Name="도끼", Damage=8},
                new Item(){Name="지팡이", Damage=3},
                new Item(){Name="활", Damage=6},
                new Item(){Name="철퇴", Damage=7},
            };


            List<Item> list = new List<Item>();

            //damage가 5이상인 모든 아이템들을 출력하세요
            for(int i = 0; i < items.Length; i++)
            {
                Item item2 = items[i];
                if (item2.Damage >= 5)
                {
                    list.Add(item2);
                }
            }
            foreach(Item item1 in list)
            {
                Console.WriteLine("{0} {1}", item1.Name, item1.Damage);
            }

            //LINQ
            //damage가 5 이상인 아이템들을 필터
            //새로운 시퀀스에 담고 싶다
            //원본을 안건드리고 시퀀스를 이용하고 싶다
            //새 시퀀스 어떤 값들로 넣을까?
            //예) List에 있는 아이템들은 등급이 있다. 아이템들중에 신화급 아이템들의 이름만 사용자에게 보여주고싶다.
            //IEnumerable<string> itemNames = from 범위변수 in 컬렉션
            var itemNames = from item in items
                            where item.Damage >= 5
                            orderby item.Damage descending
                            select new { Name = item.Name };

            foreach(var item in itemNames)
            {
                Console.WriteLine(item.Name);
            }

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study11
{
    class Item
    {
        public string Name
        {
            get;set;
        }

        public int Damage
        {
            get;set;
        }


        //생성자
        public Item()
        {

        }

    }
}
728x90