[c#] 람다식을 사용하여 어떻게 람다 식 트리를 만들어 사용할 수 있나요?

람다식 트리는 람다식을 사용하여 동적으로 식 트리를 만들고 실행할 수 있는 기능입니다. 람다식 트리는 일반적으로 LINQ 쿼리나 다른 동적 코드 생성 시나리오에서 사용됩니다.

람다식 트리 만들기

람다식 트리를 만들기 위해서는 Expression 클래스의 메서드를 사용합니다.

예를 들어, x => x * x와 같은 람다식을 사용하여 Expression<Func<int, int>> 형식의 람다식 트리를 만들고 싶다면, 다음과 같이 작성할 수 있습니다.

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        // 입력 파라미터
        ParameterExpression x = Expression.Parameter(typeof(int), "x");
        
        // 람다 식: x => x * x
        Expression<Func<int, int>> lambda = Expression.Lambda<Func<int, int>>(
            Expression.Multiply(x, x), x);

        // 람다식 트리를 컴파일하여 실행
        Func<int, int> square = lambda.Compile();
        Console.WriteLine(square(5)); // 출력: 25
    }
}

위 예제에서, Expression.Lambda 메서드를 사용하여 람다식 트리를 만들고, Compile 메서드를 사용하여 실행 가능한 람다 식을 생성합니다.

람다식 트리 사용하기

람다식 트리를 사용하면 코드를 동적으로 생성하고 실행할 수 있습니다. 예를 들어, LINQ 쿼리나 동적으로 생성된 식을 사용하여 데이터베이스 쿼리를 작성할 때 유용하게 사용될 수 있습니다.

using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        // 입력 파라미터
        ParameterExpression x = Expression.Parameter(typeof(int), "x");

        // 람다 식: x => x * x
        Expression<Func<int, int>> lambda = Expression.Lambda<Func<int, int>>(
            Expression.Multiply(x, x), x);

        // 람다식 트리를 컴파일하여 실행
        Func<int, int> square = lambda.Compile();
        Console.WriteLine(square(5)); // 출력: 25
    }
}

람다식 트리를 사용하면 동적으로 생성된 코드를 빌드하거나 실행할 수 있어 매우 유연하게 코드를 작성할 수 있습니다.

이렇게 람다식 트리를 사용하면 C#에서 동적으로 코드를 생성하고 실행할 수 있습니다. 사용 방법을 익히면 LINQ나 기타 동적 코드 생성 시나리오에서 유용하게 활용할 수 있습니다.

더 많은 정보는 Microsoft 공식 문서를 참고하시기 바랍니다.