- 리스트를 정렬 후 맨위값을 제외 하거나 특정 몇개의 요소를 반환 할때 사용
- orderby 연계하여 활용시 좋음
public class Item{
public string Name {get; set;}
public string Type {get; set;}
public int Price {get; set;}
}
public class Program
{
public static void Main()
{
List<Item> temp = new List<Item>();
temp.Add(new Item(){Name = "컴퓨터", Type = "가전", Price = 2000000});
temp.Add(new Item(){Name = "모니터", Type = "가전", Price = 100000});
temp.Add(new Item(){Name = "냉장고", Type = "가전", Price = 1500000});
temp.Add(new Item(){Name = "책", Type = "책", Price = 10000});
temp.Add(new Item(){Name = "아이폰", Type = "휴대폰", Price = 1300000});
var result = (from i in temp orderby i.Price descending select i).Skip(1).Take(2);
foreach(var i in result)
{
Console.WriteLine(i.Name + ": "+ i.Price);
}
}
}
// 결과
// 냉장고: 1500000
// 아이폰: 1300000
fisrt는 해당 리스트 객체의 첫번째 객체를 반환하는 함수. 그러나 리스트가 비어있다면 예외를 발생(ArgumentNullException), Take()는 예외를 throw하지 않음
Take는 IEnumurable 객체를 리턴, first는 해당 요소의 자료형을 리턴
Single, SingleOrDefault, First 및 FirstOrDefault를 사용하는 경우 다음 사항을 주의
결과 집합에 많은 레코드가 포함되어 있으면 예외가 throw되도록하려면 Single 또는 SingleOrDefault를 사용
결과 집합에 레코드가 없는 경우 기본값을 반환하려면 SingleOrDefault를 사용
결과 집합에 관계없이 항상 하나의 레코드를 원하면_ First 또는 FirstOrDefault를 사용
결과 집합에 레코드가 없는 경우 기본값을 원하면_ FirstOrDefault를 사용