C#/수업내용
[ C# 10일차 ] LINQ와 익명형식
by 왹져박사
2023. 1. 12.
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()
{
}
}
}