[C# 문법] C# LINQ Take, TakeWhile 메서드

소개

  • 오늘은 C# LINQ 구문에서 여러개의 요소를 쉽게 구할 수 있도록 도와주는 메서드인 Take, TakeWhile 메서드에 대해서 알아보려고 합니다.
  • 예제 코드를 통해서 Take, TakeWhile 메서드를 어떤 경우에서 각각 사용하는지 보여 드리도록 하겠습니다.

Take 메서드예제 코드

  • Take 메서드를 이용하면, Where 조건에 해당하는 요소에서 특정 개수만 정해서 해당 개수만큼의 요소를 필터해서 가져올 수 있습니다.
  • 또한, Take 메서드는 요소가 지정한 개수만큼 없어도 오류를 발생시키지 않습니다.
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp7
{
    static class Program
    {
        static void Main(string[] args)
        {
            var result = InitialStudent();

            // 성적이 10점 이상인 학생 중,  5명만 필터하기
            var query = result.Where(x => x.Score >= 10)
                              .Take(5);

            foreach (var item in query)
            {
                Console.WriteLine($"이름 : {item.Name} 성적 : {item.Score}");
            }
        }

        static List<Student> InitialStudent()
        {
            List<Student> list = new List<Student>()
            {
                new Student() { Name = "범범조조", Age = 20, Grade = "A", Score = 100 },
                new Student() { Name = "유재석", Age = 21, Grade = "B", Score = 10 },
                new Student() { Name = "김종국", Age = 22, Grade = "C", Score = 89 },
                new Student() { Name = "송지효", Age = 20, Grade = "D", Score = 60 },
                new Student() { Name = "하하", Age = 20, Grade = "A+", Score = 20 },
                new Student() { Name = "지석진", Age = 40, Grade = "F", Score = 55 },
                new Student() { Name = "아이유", Age = 30, Grade = "A", Score = 64 },
                new Student() { Name = "정형돈", Age = 22, Grade = "A", Score = 79 },
                new Student() { Name = "김성주", Age = 20, Grade = "A", Score = 29 }
            };

            return list;
        }
    }

    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Grade { get; set; }
        public int Score { get; set; }
    }
}

실행 결과

이름 : 범범조조 성적 : 100
이름 : 유재석 성적 : 10
이름 : 김종국 성적 : 89
이름 : 송지효 성적 : 60
이름 : 하하 성적 : 20

TakeWhile 메서드예제 코드

  • TakeWhile 메서드를 사용하면 지정한 조건을 만족하는 동안에만 요소를 구할 수 있습니다.
  • 조건을 만족하지 않는 요소가 발견된 시점에서 열거하는 일을 끝냅니다.
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp7
{
    static class Program
    {
        static void Main(string[] args)
        {
            var result = InitialStudent();

            var query = result.TakeWhile(x => x.Score > 80);

            foreach (var item in query)
            {
                Console.WriteLine($"이름 : {item.Name} 성적 : {item.Score}");
            }
        }

        static List<Student> InitialStudent()
        {
            List<Student> list = new List<Student>()
            {
                new Student() { Name = "범범조조", Age = 20, Grade = "A", Score = 100 },
                new Student() { Name = "유재석", Age = 21, Grade = "B", Score = 10 },
                new Student() { Name = "김종국", Age = 22, Grade = "C", Score = 89 },
                new Student() { Name = "송지효", Age = 20, Grade = "D", Score = 60 },
                new Student() { Name = "하하", Age = 20, Grade = "A+", Score = 20 },
                new Student() { Name = "지석진", Age = 40, Grade = "F", Score = 55 },
                new Student() { Name = "아이유", Age = 30, Grade = "A", Score = 64 },
                new Student() { Name = "정형돈", Age = 22, Grade = "A", Score = 79 },
                new Student() { Name = "김성주", Age = 20, Grade = "A", Score = 29 }
            };

            return list;
        }
    }

    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Grade { get; set; }
        public int Score { get; set; }
    }
}

실행 결과

이름 : 범범조조 성적 : 100
  • TakeWhile문을 사용해서 성적이 80보다 큰 요소가 있으면 해당 요소를 반환하고 바로 LINQ 를 빠져나옵니다.
  • foreach 문이나 if문을 쓰지 않고 간단히 LINQ를 통해서 처리할 수 있다는 것이 큰 장점이라고 생각합니다.
  • LINQ 메서드를 많이 알수록 코드량도 간결해지고 가독성도 증가하기 때문에 LINQ를 자주 사용하는 것을 추천 드리겠습니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY