[C#] Take, Skip

이상묵·2022년 5월 26일
0

ASP.NET

목록 보기
3/3
post-thumbnail

Take와 Skip

  1. Take
    • 시작위치부터 지정된 수의 요소들을 반환
  2. Skip
    • 시작 위치부터 지정된 수의 요소들을 제외

활용

  • 리스트를 정렬 후 맨위값을 제외 하거나 특정 몇개의 요소를 반환 할때 사용
  • 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

First() 와 Take()의 차이점

  • fisrt는 해당 리스트 객체의 첫번째 객체를 반환하는 함수. 그러나 리스트가 비어있다면 예외를 발생(ArgumentNullException), Take()는 예외를 throw하지 않음

  • Take는 IEnumurable 객체를 리턴, first는 해당 요소의 자료형을 리턴

하나만 골라 쓰기

Single, SingleOrDefault, First 및 FirstOrDefault를 사용하는 경우 다음 사항을 주의

결과 집합에 많은 레코드가 포함되어 있으면 예외가 throw되도록하려면 Single 또는 SingleOrDefault를 사용

결과 집합에 레코드가 없는 경우 기본값을 반환하려면 SingleOrDefault를 사용

결과 집합에 관계없이 항상 하나의 레코드를 원하면_ First 또는 FirstOrDefault를 사용

결과 집합에 레코드가 없는 경우 기본값을 원하면_ FirstOrDefault를 사용

profile
더 이상은 미룰 수 없다.

0개의 댓글