[C# 문법] List<T> 클래스와 람다식 조합
- C#/C# 문법
- 2021. 8. 6. 22:24
참조
- 프랙티컬 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> 는 람다식과 함께 같이 쓸수 있는 메서들이 많이 있습니다.
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# Enum Description 사용 하기 (0) | 2021.08.13 |
---|---|
[C# 문법] C# Linq 지연실행 (0) | 2021.08.10 |
[C# 문법] List<T> 클래스와 람다식 조합 (4) | 2021.08.06 |
[C# 문법] C# Linq Zip 메서드 (0) | 2021.08.04 |
[C# 문법] C# 디렉토리(Directory) 년\월\일 디렉토리 구조 삭제하기 (0) | 2021.08.03 |
[C# 문법] C# 월별, 일별 Directory 삭제하기 (0) | 2021.07.29 |
이 글을 공유하기
-
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 절에 람다 표현식으로 속성 선택해서 비교할수 있습니다~!