닷넷/C#

C# foreach 루프를 LINQ로 변환하는 아주 쉬운 방법

FreeBear 2020. 10. 16. 15:41
반응형

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

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

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

 참고

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

 

 


 

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

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

    foreach

     

  2. 줄의 임의 위치에서 Ctrl+ . 를 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다.

    (혹은 foreach 영역을 선택하고, 오른쪽 마우스로 클릭하고, 빠른 작업 및 리팩터링 클릭)

    빠른 작업 및 리팩터링을 하였을 때

     

     

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

    호출양식1

     

    호출양식2

     


 

샘플 코드

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

 

출처: https://docs.microsoft.com/ko-kr/visualstudio/ide/reference/convert-foreach-linq?view=vs-2019

 

foreach 루프를 LINQ로 변환 - Visual Studio

foreach 루프를 LINQ로 변환Convert a foreach loop to LINQ 이 문서의 내용 --> 이 리팩터링은 다음에 적용됩니다.This refactoring applies to: 내용: IEnumerable을 사용하는 foreach 루프를 LINQ 쿼리 또는 LINQ 호출 양식(L

docs.microsoft.com

 

반응형