유니티 FirstOrDefault #LINQ

FirstOrDefault란?

주어진 조건을 만족하는 시퀀스에서 첫 번째 요소를 검색하는 LINQ의 메서드입니다.
 
시퀀스란 저번 Dotween Pro에셋을 소개하면서 짧게 설명해봤습니다.
아래 링크를 참고해주세요!
2022.11.16 - [Unity/Assets] - 신나서 쓰는 Dotween Pro 에셋 사용법

신나서 쓰는 Dotween Pro 에셋 사용법

Dotween이란? Dotween은 빠르고 효율적이며 안전성을 갖춘 애니메이션 엔진으로, C#에 최적화되어 있습니다. 높은 수준의 유연성과 커스터마이징을 유지하면서 단순하고 사용하기 쉬운 것으로 잘 알

wlsdn629.tistory.com


사용방법

Predicate이 없는 경우

-  Predicate란? 
사전적인 의미로는 "서술하다, 단정하다" 라는 뜻으로 사용하지만 프로그래밍 언어에서는 데이터의 값이 조건을 만족하는지 검사한다는 의미로 사용됩니다.

var numbers = new List<int> { 2, 4, 6, 8, 10 };
var firstNumber = numbers.FirstOrDefault();
Console.WriteLine(firstNumber); // Output: 2

Predicate가 없는 경우 FirstOrDefault는 맨 처음 항목 또는 시퀀스가 비어 있는 경우 Default값을 return해줍니다.


Predicate가 있는 경우

var numbers = new List<int> { 2, 4, 6, 8, 10 };
var firstOddNumber = numbers.FirstOrDefault(n => n % 2 != 0);
Console.WriteLine(firstOddNumber); // Output: 0

위 예시에서는 목록에서 첫 번째 홀수를 찾으려고 시도하는 케이스입니다.
하지만, 홀수가 하나도 없기 때문에 int의 기본값인 '0'을 return합니다.


 

Predicate를 만족하는 값이 목록에 여러개 있는 경우

using System;
using System.Collections.Generic;
using System.Linq;

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

public class Program
{
    public static void Main()
    {
        var people = new List<Person>
        {
            new Person { Name = "Alice", Age = 25 },
            new Person { Name = "Bob", Age = 30 },
            new Person { Name = "Charlie", Age = 25 },
            new Person { Name = "David", Age = 25 },
            new Person { Name = "Eva", Age = 35 },
        };

        var firstAged25 = people.FirstOrDefault(p => p.Age == 25);
        
        if (firstAged25 != null)
        {
            Console.WriteLine(firstAged25.Name);  // Output: Alice
        }
    }
}

조건을 만족하는 여러 요소가 있는 경우 첫 번째 값만 return해줍니다.