C# foreach 루프를 LINQ로 변환하는 아주 쉬운 방법
내용: IEnumerable을 사용하는 foreach 루프를 LINQ 쿼리 또는 LINQ 호출 양식(LINQ 메서드라고도 함)으로 쉽게 변환할 수 있습니다.
시기: IEnumerable을 사용하는 foreach 루프가 있고 이 루프를 LINQ 쿼리로 읽으려고 합니다.
이유: foreach 루프가 아닌 LINQ 구문을 사용하고 싶습니다. LINQ를 사용하면 쿼리가 C#의 고급 언어 구문이 됩니다. LINQ는 파일의 코드양을 줄이고, 코드를 읽기 쉽게 하며, 다른 데이터 소스가 유사한 쿼리 식 패턴을 갖도록 할 수 있습니다.
참고
LINQ 구문은 일반적으로 foreach 루프보다 효율이 떨어집니다. LINQ를 사용하면 코드의 가독성은 좋아지는 대신 성능이 떨어질 수 있다는 점을 알고 있는 것이 좋습니다.
foreach 루프를 LINQ 리팩터링으로 변환
-
커서를 foreach 키워드에 놓습니다.
foreach -
줄의 임의 위치에서 Ctrl+ . 를 눌러 빠른 작업 및 리팩터링 메뉴를 트리거합니다.
(혹은 foreach 영역을 선택하고, 오른쪽 마우스로 클릭하고, 빠른 작업 및 리팩터링 클릭)
빠른 작업 및 리팩터링을 하였을 때 -
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