세 가지 일반적인 LINQ 실수 및 해결 방법
for
, foreach
및 기타 루프를 대체하기 위해 LINQ 작업을 시작하는 것은 그렇게 복잡하지 않습니다. 그러나 LINQ로 작업할 때 자주 저지르는 실수가 있습니다. LINQ를 처음 접할 때 흔히 저지르는 세 가지 실수와 해결 방법을 알아보겠습니다.실수 1: Any 대신 Count를 사용하세요.
컬렉션에 요소가 있는지 또는 조건을 충족하는 요소가 하나 이상 있는지 확인하려면 항상
Any
보다 Count
를 선호해야 합니다.글을 쓰자,
movies.Any()
대신에,
movies.Count() > 0
Any
메서드는 하나 이상의 요소를 찾으면 반환하지만 Count
메서드는 전체 쿼리를 평가합니다. 이는 대규모 컬렉션의 경우 성능 저하가 될 수 있습니다.실수 2: Where 다음에 Any를 사용하세요.
먼저
Any
로 필터링한 다음 Where
를 사용하는 대신 Any
로 조건을 직접 사용할 수 있습니다.글을 쓰자,
movies.Any(movie => movie.Rating == 5)
대신에,
movies.Where(movie => movie.Rating == 5).Any()
Where
메서드 다음에 FirstOrDefault
, Count
또는 필터 조건을 받는 다른 메서드에도 동일하게 적용됩니다. 먼저 Where
메서드에 의존하는 대신 필터 조건을 직접 사용할 수 있습니다.실수 3: null 검사 없이 FirstOrDefault 사용
FirstOrDefault
, LastOrDefault
및 SingleOrDefault
로 작업할 때 결과가 있는지 항상 확인합시다.위의 세 가지 방법 중 하나라도 결과를 찾지 못하면 컬렉션 유형의 기본값을 반환합니다.
개체의 경우 기본값은
null
참조입니다. 그리고 null
참조에서 속성이나 메서드에 액세스할 때 어떤 일이 발생하는지 아십니까?... 예, 무시무시한 NullReferenceException
가 발생합니다. 아아악!다음 코드 샘플에 이 실수가 있습니다.
worst
변수에 값이 있는지 확인하는 것을 잊었습니다. Anif (worst != null)
이 문제를 해결할 것입니다.var movies = new List<Movie>
{
new Movie("Titanic", 1998, 4.5f),
new Movie("The Fifth Element", 1995, 4.6f),
new Movie("Terminator 2", 1999, 4.7f),
new Movie("Avatar", 2010, 5),
new Movie("Platoon", 1986, 4),
new Movie("My Neighbor Totoro", 1988, 5)
};
var worst = movies.FirstOrDefault(movie => movie.Rating < 2);
// We forgot to check for nulls after using FirstOrDefault
// It will break
Console.WriteLine($"{worst.Name}: [{worst.Rating}]");
// ^^^^^^^^^^^^
// System.NullReferenceException: 'Object reference not set to an instance of an object.'
//
// worst was null.
Console.ReadKey();
record Movie(string Name, int ReleaseYear, float Rating);
등급이 2보다 낮은 첫 번째 영화를 찾기 위해
FirstOrDefault
를 사용하여 LINQ 쿼리를 작성했습니다. 하지만 해당 조건과 일치하는 영화가 없습니다. FirstOrDefault
메서드는 null
를 반환했으며 worst
변수가 null
와 다른지 확인하는 것을 잊고 사용했습니다..NET 6에서 선택한 nullable reference types from C# 8.0, the DefaultOrEmpty method 또는 FirstOrDefault with an optional default value과 같은
NullReferenceException
를 제거하는 다른 대안이 있습니다.짜잔! 이것이 가장 일반적인 세 가지 LINQ 실수입니다. 나는 그들이 어리석은 것처럼 보인다는 것을 알고 있지만 우리는 종종 그들을 간과합니다. LINQ 및 모든 기능을 자세히 살펴보려면 myQuick Guide to LINQ 를 확인하십시오.
예제와 함께 LINQ에 대한 빠른 가이드
Cesar Aguirre ・ 2021년 2월 1일 ・ 읽기 7분
#tutorial
#csharp
#beginners
#dotnet
여기요! 저는 소프트웨어 엔지니어이자 평생 학습자인 Cesar입니다. 내 작업에 대해 자세히 알아보려면 my blog을 방문하세요! 내 작업을 지원하려면 Educative에서 내Getting Started with LINQ course를 확인하십시오.
즐거운 코딩하세요!
Reference
이 문제에 관하여(세 가지 일반적인 LINQ 실수 및 해결 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/canro91/three-common-linq-mistakes-and-how-to-fix-them-1eeo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)