본문 바로가기
코딩테스트 준비/자료구조 & 알고리즘

C# - IEnumerable설명 및 메서드(MIN,MAX,Average등)

by 코딩하는 돼징 2023. 8. 28.
반응형

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);

 

 

 

 

 

 

반응형

댓글