[C# 문법] List<T> 클래스와 람다식 조합

참조

  • 프랙티컬 C#

소개

  • List<T> 클래스에는 델리게이트를 매개변수로 받는 메서드들이 많이 있습니다.
  • 예제를 통해서 List<T> 각 메서드들을 람다식과 함께 표현해 보도록 하겠습니다.

Exists 메서드

  • Exists 메서드는 인수로 지정한 조건에 일치하는 요소가 존재하는지 조사하고, true, false를 반환합니다.
using System;
using System.Collections.Generic;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string>
            {
                "범범조조",
                "유재석",
                "아이유",
                "정형돈",
                "박명수"
            };

            var result = list.Exists(s => s.ToString().Contains("범범조조"));
            Console.WriteLine($"result : {result}");
        }
    }
}
result : true

Find 메서드

  • Find 메서드는 매개변수로 지정한 조건과 일치하는 요소를 검색하고 처음 발견된 요소를 반환합니다.
using System;
using System.Collections.Generic;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string>
            {
                "범범조조",
                "유재석",
                "아이유",
                "정형돈",
                "박명수"
            };

            var result = list.Find(s => s.ToString().Contains("범범조조"));

            Console.WriteLine($"result : {result}");
        }
    }
}
result : 범범조조

FindIndex 메서드

  • FindIndex 메서드는 Find와 비슷합니다.
  • 발견된 요소의 인덱스를 반환합니다.
using System;
using System.Collections.Generic;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string>
            {
                "범범조조",
                "유재석",
                "아이유",
                "정형돈",
                "박명수"
            };

            var result = list.FindIndex(s => s.ToString().Contains("범범조조"));

            Console.WriteLine($"result : {result}");
        }
    }
}
result : 0

FindAll 메서드

  • FindAll 메서드는 매개변수로 지정한 조건과 일치하는 모든 요소를 찾습니다.
using System;
using System.Collections.Generic;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string>
            {
                "범범조조",
                "유재석",
                "안녕하세요 ㅋㅋㅋㅋ",
                "아이유",
                "정형돈",
                "박명수"
            };

            var result = list.FindAll(s => s.Length > 7);

            foreach (var item in result)
            {
                Console.WriteLine($"result : {item}");
            }
        }
    }
}
result : 안녕하세요 ㅋㅋㅋㅋ

ForEach 메서드

  • ForEach 메서드는 매개변수로 지정한 처리 내용을 리스트의 각 요소를 대상으로 실행합니다.
using System;
using System.Collections.Generic;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string>
            {
                "범범조조",
                "유재석",
                "안녕하세요 ㅋㅋㅋㅋ",
                "아이유",
                "정형돈",
                "박명수"
            };

            list.ForEach(name => Console.WriteLine($"result : {name}"));
        }
    }
}
result : 범범조조
result : 유재석
result : 안녕하세요 ㅋㅋㅋㅋ
result : 아이유
result : 정형돈
result : 박명수
  • 이처럼 List<T> 는 람다식과 함께 같이 쓸수 있는 메서들이 많이 있습니다.
728x90

이 글을 공유하기

댓글(4)

  • 2022.05.19 17:03 신고

    안녕하세요 블로그 잘 보고있습니다.

    질문이 있습니다.

    public class Member
    {
    public int name;
    public int age;
    }
    List<Member> list = new List<>();

    와 같이 선언된 list일 경우 list의 contains을 사용하여서 이미 List에 존재하는 Member name이 동일한 것이 있는지 검사하는 (중복확인) 방법이 있을까요??

    • 2022.05.19 20:15 신고


      List<Member> members = new List<Member>()
      {
      new Member()
      {
      Id = 1,
      Name = "Kim"
      },
      new Member()
      {
      Id = 2,
      Name = "Kim"
      }
      };

      // 중복 확인
      var IsExistsMS = members.Contains(new Member() { Id = 1, Name = "Kim"});

      Console.WriteLine(IsExistsMS);

      // Entity
      public class Member
      {
      public int Id { get; set; }
      public string Name { get; set; }
      }

      위와 같이 중복 여부 체크할 수 있습니다~~

    • 2022.05.23 11:36 신고

      안녕하세요 범범조조님

      답변주셔서 감사합니다.

      위 코드로 테스트해보았는데 False값이 출력이 됩니다...

      또한, 만약 Id, Name의 값들 중 Name에 한해서만 존재하는지 확인하려고 할 때 반복문으로 List 전체들을 확인할 까하다가 더 좋은 방법이 있을까하여 질문을 드렸습니당

  • 2022.05.23 11:45 신고

    Linq에서 where 절에 람다 표현식으로 속성 선택해서 비교할수 있습니다~!

Designed by JB FACTORY