foreach 루프를 LINQ로 변환

이 리팩터링은 다음에 적용됩니다.

  • C#

내용: IEnumerable을 사용하는 foreach 루프를 LINQ 쿼리 또는 LINQ 호출 양식(LINQ 메서드라고도 함)으로 쉽게 변환할 수 있습니다.

시기: IEnumerable을 사용하는 foreach 루프가 있으며 해당 루프를 LINQ 쿼리로 읽으려고 합니다.

이유: foreach 루프 대신 LINQ 구문을 사용하는 것이 좋습니다. LINQ를 사용하면 쿼리가 C#의 고급 언어 구문이 됩니다. LINQ는 파일의 코드양을 줄이고, 코드를 읽기 쉽게 하며, 다른 데이터 소스가 유사한 쿼리 식 패턴을 갖도록 할 수 있습니다.

참고 항목

LINQ 구문은 일반적으로 foreach 루프보다 효율이 떨어집니다. LINQ를 사용하면 코드의 가독성은 좋아지는 대신 성능이 떨어질 수 있다는 점을 알고 있는 것이 좋습니다.

foreach 루프를 LINQ 리팩터링으로 변환

  1. 커서를 foreach 키워드에 놓습니다.

    Foreach using IEnumerable sample

  2. Ctrl 키를 누릅니다+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.

    Convert to LINQ menu sample

  3. LINQ로 변환 또는 Linq(호출 양식)로 변환을 선택합니다.

    LINQ query result sample

    LINQ call form result sample

샘플 코드

using System.Collections.Generic;

public class Class1
{
    public void MyMethod()
    {
        var greetings = new List<string>()
            { "hi", "yo", "hello", "howdy" };

        IEnumerable<string> enumerable()
        {
            foreach (var greet in greetings)
            {
                if (greet.Length < 3)
                {
                    yield return greet;
                }
            }

            yield break;
        }
    }
}

참고 항목