반응형
Enumerable
static class로 System.Linq namespace에 속해져있다. LINQ(Language Integrated Query)를 이용해서 데이터를 검색,정렬,변환등 작업을 수행한다. Enumberable메서드는 IEnumberable형식의 컬렉션에 대해 사용되며 이를 통해 컬렉션의 요소를 쿼리하고 조작할 수 있다.
IEnumerable
C#에서 컬렉션을 나타내는 기본 인터페이스이다. 컬렉션의 요소를 열겨하고 반복하는 기능을 정의한다. 즉 각요소에 접근하고 처리할 수 있게 해준다. 이를 활용하여 배열, 리스트, 딕셔너리등 다양한 컬렉션 유형을 순회하거나 LINQ에 활용할 수 있다.
namespace System.Collections
{
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
}
결론적으로 IEnumberable은 컬렉션의 요소를 반복하는 인터페이스이며 Enumerable은 LINQ메서드를 제공하여 컬렉션을 조작하고 쿼리하는 도구이다. Enumberable메서드를 사용하려면 해당 컬렉션이 IEnumberable인터페이스를 구현하고 있어야한다.
Enumerable 메서드
01 Min
숫자 요소의 최솟값
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
int Value = numbers.Min();
02 Max
숫자 요소의 최댓값
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
int Value = numbers.Max();
03 Average
숫자요소의 평균값
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
double Value = numbers.Average();
04 Sum
숫자요소의 합계
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
int Value = numbers.Sum();
05 Where
조건을 만족하는 요소 선택
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
06 Select
각 요소를 변환하거나 투영
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
var squaredNumbers = numbers.Select(n => n * n);
07 OrderBy(오름차순),OrderByDescending(내림차순)
요소를 정렬
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
var sortedNumbers = numbers.OrderBy(n => n); // 오름차순
var descendingNumbers = numbers.OrderByDescending(n => n); // 내림차순
08 GroupBy
특정 키로 그룹화
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
IEqualityComparer<TKey> comparer
);
매개변수
source : 그룹화할 원본 컬렉션
keySelector : 각 요소에 대해 그룹화할 키(Key)선택하는 함수(delegate) 이다. 이를 통해 그룹화의 기준을 정한다.
comparer : 키를 비교하는데 사용할 개체
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var groupedNumbers = numbers.GroupBy(num => num % 2 == 0 ? "Even" : "Odd");
09 Count,Any,All
요소의 개수, 특정 조건을 만족하는지 여부
List<int> numbers = new List<int> { 3, 2, 9, 11, 5, 7 };
int count = numbers.Count();
bool hasEvenNumbers = numbers.Any(n => n % 2 == 0);
bool allPositive = numbers.All(n => n > 0);
10 Distinct
중복 요소 제거
var distinctNumbers = numbers.Distinct();
11. Join, Zip
두 개 이상의 컬렉션을 결합하거나 요소를 조합
List<string> colors = new List<string> { "blue", "yellow", "pink" };
List<int> numbers = new List<int> { 25, 30, 22 };
var combinedData = colors.Zip(numbers);
반응형
'코딩테스트 준비 > 자료구조 & 알고리즘' 카테고리의 다른 글
C# - 연결리스트 구현 (0) | 2023.09.04 |
---|---|
C# - 문자열로 이루어진 리스트 요소들을 정수로 바꾸는법 +) 지연 평가(Lazy Evaluation) (0) | 2023.09.01 |
C# - 동적 배열 구현 (0) | 2023.08.28 |
C# - 배열, 동적 배열, 연결 리스트 비교 (0) | 2023.08.28 |
C# - 그래프(자료 구조) 이론 (그래프 종류들, 다양하게 코드로 구현해보기) (0) | 2023.07.13 |
댓글