C#/LINQ

[C#]LINQ 지정된 범위 또는 횟수만큼 데이터 생성 - Range, Repeat 메서드

DevStory 2022. 8. 14.

생성 연산자

지금까지는 Join, Select, Where, Take 메서드 등... 데이터 집합에서 원하는 데이터를 추출하는 방법을 소개했습니다.

 

이번 포스팅은 데이터를 생성할 수 있는 두 가지 메서드를 소개합니다.

- Range() 메서드

- Repeat() 메서드


Range 메서드

Range() 메서드는 지정된 범위의 정수를 생성합니다.

public static IEnumerable<int> Range(int start, int count);

Range() 메서드는 두 개의 int 타입 매개변수가 존재합니다. 첫 번째 매개변수는 지정된 범위에서 시작하는 값을 설정합니다. 두 번째 매개변수는 start부터 생성될 개수를 설정합니다.


예제 1. 1부터 10까지 데이터 생성

다음 예제는 Range() 메서드를 사용하여 1부터 5까지 정수를 생성합니다.

class Program
{
  static void Main(string[] args)
  {
    List<int> intList = Enumerable.Range(1, 5).ToList<int>();

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

[실행 결과]

1
2
3
4
5

Range() 메서드는 IEnumerable<int> 타입의 객체를 반환합니다. 따라서, List로 반환하고 싶은 경우 Range() 메서드 뒤에 ToList() 메서드를 호출합니다.


예제 2. 5의 배수인 데이터 생성

다음 예제는 1부터 50까지 범위에서 10의 배수인 숫자만 생성합니다.

 

Range() 메서드를 사용하여 1부터 50까지 숫자를 생성한 다음 Where() 메서드를 사용하여 10의 배수인 데이터만 필터링합니다.

class Program
{
  static void Main(string[] args)
  {
    List<int> intList = Enumerable.Range(1, 50)
        .Where(num => num % 10 == 0)
        .ToList<int>();

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

[실행 결과]

10
20
30
40
50

Repeat 메서드

Repeat() 메서드는 특정 데이터를 특정 횟수만큼 생성합니다.

public static IEnumerable<TResult> Repeat<TResult>(TResult element, int count);

첫 번째 매개변수는 특정 데이터를 설정합니다. 두 번째 매개변수는 특정 데이터(첫 번째 매개변수)의 생성 횟수를 설정합니다.

 

참고로 두 번째 매개변수의 값이 0보다 작은 경우 ArgumentOutOfRangeException이 발생합니다.


예제 1. 특정 횟수만큼 데이터 생성

다음 예제는 문자열 "Hello"를 Repeat() 메서드를 사용하여 특정 횟수만큼 생성합니다.

class Program
{
  static void Main(string[] args)
  {
    List<string> strList = Enumerable.Repeat("Hello", 5).ToList<string>();

    foreach (string strValue in strList)
    {
      Console.WriteLine(strValue);
    }
  }
}

[실행 결과]

Hello
Hello
Hello
Hello
Hello

Repeat() 메서드는 IEnumerable<TResult> 타입의 객체를 반환합니다. 따라서, List로 반환하고 싶은 경우 Repeat() 메서드 뒤에 ToList() 메서드를 호출합니다.

반응형

댓글