[Study][C#] Linq 사용법

LimJaeJun·2024년 1월 11일

Study

목록 보기
6/16

Linq

Aggregate

반환 값
누적 작업이 완료된 최종 결과

용도
컬렉션의 모든 요소에 대해 지정된 누적 작업을 수행하여 최종 결과를 반환하는 함수입니다. 초기값(seed)부터 시작하여 각 요소에 대해 누적 작업을 수행하고 최종 결과를 생성합니다.

간단한 예시

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

int sum = numbers.Aggregate(0, (acc, num) => acc + num);

Console.WriteLine(sum); // 출력: 15

OrderBy

반환 값
정렬된 컬렉션 (오름차순)

용도
컬렉션의 요소를 특정 속성을 기준으로 오름차순으로 정렬하는 함수입니다. 정렬된 결과를 가지는 새로운 컬렉션을 반환합니다.

간단한 예시

List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };

var sortedNumbers = numbers.OrderBy(num => num);

foreach (var number in sortedNumbers)
{
    Console.Write(number + " "); // 출력: 1 2 5 7 8
}

OrderByDescending

반환 값
정렬된 컬렉션 (내림차순)

용도
컬렉션의 요소를 특정 속성을 기준으로 내림차순으로 정렬하는 함수입니다. 정렬된 결과를 가지는 새로운 컬렉션을 반환합니다.

간단한 예시

List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };

var sortedNumbers = numbers.OrderByDescending(num => num);

foreach (var number in sortedNumbers)
{
    Console.Write(number + " "); // 출력: 8 7 5 2 1
}

Where

반환 값
필터링된 컬렉션

용도
컬렉션에서 특정 조건을 만족하는 요소들을 필터링하는 함수입니다. 조건을 만족하는 요소로 이루어진 새로운 컬렉션을 반환합니다.

간단한 예시

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

var filteredNumbers = numbers.Where(num => num % 2 == 0);

foreach (var number in filteredNumbers)
{
    Console.Write(number + " "); // 출력: 2 4
}

Select

반환 값
변환된 컬렉션

용도
컬렉션의 각 요소를 새로운 형태로 변환하는 함수입니다. 각 요소에 대해 지정된 변환 함수를 적용하여 새로운 데이터로 이루어진 컬렉션을 반환합니다.

간단한 예시

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

var squaredNumbers = numbers.Select(num => num * num);

foreach (var number in squaredNumbers)
{
    Console.Write(number + " "); // 출력: 1 4 9 16 25
}

SelectMany

반환 값
시퀀스의 각 요소에 대해 지정된 변환 함수를 적용하고 그 결과를 평면화한 단일 시퀀스

용도
시퀀스의 각 요소에 대해 지정된 변환 함수를 적용하고 그 결과를 평면화하여 단일 시퀀스를 생성하는 데 사용됩니다. 주로 중첩된 컬렉션을 평면화하거나, 시퀀스의 각 요소에 대해 다중의 결과를 생성할 때 유용하게 사용됩니다.

간단한 예시

List<List<int>> nestedList = new List<List<int>>
{
    new List<int> { 1, 2, 3 },
    new List<int> { 4, 5 },
    new List<int> { 6, 7, 8 }
};

var flattenedList = nestedList.SelectMany(x => x);

foreach (var number in flattenedList)
{
    Console.WriteLine(number);
}

Count

반환 값
요소의 개수

용도
컬렉션 내의 요소의 개수를 반환하는 함수입니다.

간단한 예시

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

int count = numbers.Count();

Console.WriteLine(count); // 출력: 5

GroupBy

반환 값
그룹화된 컬렉션

용도
컬렉션의 요소를 특정 기준에 따라 그룹화하는 함수입니다. 각 그룹은 고유한 키에 따라 식별되며, 그룹화된 결과를 담은 새로운 컬렉션을 반환합니다.

간단한 예시

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

List<Student> students = new List<Student>
{
    new Student { Name = "Alice", Age = 20 },
    new Student { Name = "Bob", Age = 22 },
    new Student { Name = "Charlie", Age = 20 },
    new Student { Name = "David", Age = 22 },
};

var groupedByAge = students.GroupBy(student => student.Age);

foreach (var group in groupedByAge)
{
    Console.WriteLine($"Age: {group.Key}");
    foreach (var student in group)
    {
        Console.WriteLine($"  {student.Name}");
    }
}

출력

Age: 20
  Alice
  Charlie
Age: 22
  Bob
  David

FindAll

반환 값
조건을 만족하는 모든 요소로 이루어진 새로운 리스트

용도
컬렉션의 모든 요소에 대해 지정된 조건을 확인하고, 조건을 만족하는 모든 요소들을 찾아내어 새로운 리스트로 반환하는 함수입니다.

간단한 예시

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

List<int> evenNumbers = numbers.FindAll(n => n % 2 == 0);

Console.WriteLine(string.Join(", ", evenNumbers)); // 출력: 2, 4

Cast

반환 값
지정된 형식으로 각 요소를 캐스팅한 새로운 IEnumerable<TResult> 컬렉션

용도
비제네릭 컬렉션을 LINQ 연산을 수행하기 위한 제네릭 컬렉션으로 변환하는 데 사용됩니다. 즉, 컬렉션의 요소들을 지정된 형식으로 캐스팅하여 새로운 컬렉션을 생성합니다.

간단한 예시

ArrayList list = new ArrayList();
list.Add(1);
list.Add("two");
list.Add(3);
list.Add("four");

var numbers = list.Cast<int>();

foreach (var number in numbers)
{
    Console.WriteLine(number);
}

Concat

반환 값
두 시퀀스를 결합한 새로운 시퀀스

용도
두 개의 시퀀스를 결합하여 새로운 시퀀스를 생성하는 데 사용됩니다. 첫 번째 시퀀스의 모든 요소를 포함하고 그 뒤에 두 번째 시퀀스의 모든 요소를 추가하여 새로운 시퀀스를 반환합니다.

간단한 예시

int[] numbers1 = { 1, 2, 3 };
int[] numbers2 = { 4, 5, 6 };

var combinedNumbers = numbers1.Concat(numbers2);

foreach (var number in combinedNumbers)
{
    Console.WriteLine(number);
}
profile
Dreams Come True

0개의 댓글