using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
internal class App
{
public App()
{
//Linq 연습
Item[] items = {
new Item(){Name="장검",Damage=10},
new Item(){Name="단검",Damage=3},
new Item(){Name="도끼",Damage=12},
new Item(){Name="창",Damage=11},
new Item(){Name="방패",Damage=0},
new Item(){Name="지팡이",Damage=5},
}; //개체 이니셜라이징, 배열에서만 사용가능하다. List불가
//기존 for문을 이용한 정렬 방식
for(int i=0; i<items.Length; i++)
{
Item item = items[i];
if(item.Damage>=5)
{
Console.WriteLine("데미지가 5 이상인 무기 ->{0}",item.Name);
}
}
//기존 for문과 List를 이용한 방식(for문으로 골라내고 List에 담아서 foreach로 출력)
List<Item> list = new List<Item>();
for(int i=0; i<items.Length; i++)
{
Item item=items[i];
if(item.Damage>=5)
{
list.Add(item);
}
}
foreach(var item in list)
{
Console.WriteLine("데미지가 5이상인 무기는 {0}/{1}",item.Name,item.Damage);
}
//Linq를 이용한 간결한 정렬방식(from, where, orderby, select)
IEnumerable<string>itemNames=from item in items //var itemNames로 가능(무명형식)
where item.Damage>=5
orderby item.Damage ascending//오름차순
select item.Name;
foreach(string itemsName in itemNames)
{
Console.WriteLine(itemsName);
}
var itemName=from item in items //무명 형식 var itemsName
where item.Name=="장검"
select item.Name;
foreach(var itemsName in itemNames)
{
Console.WriteLine(itemsName);
}
}
}
}