C#/LINQ

[C#]LINQ 특정 개수만큼 데이터 가져오기 - Take 메서드

DevStory 2022. 8. 9.

Take 메서드

C#의 Linq는 데이터 집합에서 특정 개수만큼 데이터를 가져오는 Take() 메서드를 제공합니다. 데이터 집합의 처음 위치에서 n개의 데이터를 가져오며, 특정 개수는 Take() 메서드의 매개변수로 전달합니다.

public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);

Take() 메서드는 int 타입의 매개변수를 가지며, 특정 개수만큼 데이터를 반환합니다.

 

만약, Take() 메서드를 호출하는 데이터 집합이 null인 경우 ArgumentNullException이 발생합니다.


예제 1. int 타입의 List

다음 예제는 5개의 요소가 존재하는 int 타입의 List에서 Take() 메서드를 호출합니다. Take() 메서드에 3을 전달하여 처음 위치에서 3개의 데이터를 가져옵니다.

class Program
{
  static void Main(string[] args)
  {
    List<int> intList = new List<int>()
    { 
      50, 10, 40, 20, 30
    };

    List<int> TakeResult = intList.Take(3).ToList();

    foreach(int num in TakeResult)
    {
      Console.WriteLine(num);
    }
  }
}

[실행 결과]

50
10
40

예제 2. 질의 구문에서 Take 메서드 호출

질의 구문에는 Take() 메서드를 지원하지 않습니다. 따라서, 메서드 구문과 혼합하여 사용합니다.

class Program
{
  static void Main(string[] args)
  {
    List<int> intList = new List<int>()
    { 
      50, 10, 40, 20, 30
    };

    List<int> TakeResult = (from   num in intList
                            select num).Take(3).ToList();

    foreach(int num in TakeResult)
    {
      Console.WriteLine(num);
    }
  }
}

[실행 결과]

50
10
40

예제 3. 필터링 후 Take 메서드 호출

다음 예제는 int 타입의 List에서 Where 절을 사용하여 30보다 큰 요소를 추출 후 Take() 메서드를 호출하여 3개의 요소를 가져옵니다. 

class Program
{
  static void Main(string[] args)
  {
    List<int> intList = new List<int>()
    { 
      10, 20, 30, 40, 50, 60, 70, 80
    };

    List<int> TakeResult = intList.Where(num => num > 30).Take(3).ToList();

    foreach(int num in TakeResult)
    {
      Console.WriteLine(num);
    }
  }
}

[실행 결과]

40
50
60

예제 4. 데이터 집합을 null로 할당

데이터 집합을 null로 할당하고 Take() 메서드를 호출하면 다음과 같이 ArgumentNullException이 발생합니다.

class Program
{
  static void Main(string[] args)
  {
    List<int> intList = null;

    List<int> TakeResult = intList.Take(3).ToList();

    foreach(int num in TakeResult)
    {
      Console.WriteLine(num);
    }
  }
}

[에러 내용]

반응형

댓글