.NET에는 목록 a에 목록 b의 모든 항목이 포함되어 있는지 확인하는 기능이 내장되어 있나요?
이 질문의 목적은 다음과 같습니다. .NET이 한 목록에 다른 목록의 모든 요소가 포함되어 있는지 확인하는 내장 기능을 제공하는지 확인하세요.
제공된 샘플 코드는 두 번째 목록을 반복하고 각 요소가 첫 번째 목록에 있는지 확인하여 이 목적을 달성하려고 시도합니다. 이 접근 방식은 효과적이지만 해당 기능이 .NET 내에 이미 존재하는지 궁금합니다.
답변:
.NET 버전 3.5 이상에서는 이러한 기능을 실제로 사용할 수 있습니다. :
public static bool ContainsAllItems<T>(List<T> a, List<T> b) { return !b.Except(a).Any(); }
이 코드는 목록 b의 요소를 목록 a의 요소와 비교하여 목록의 모든 요소가 있는 경우에만 true를 반환합니다. b는 a에도 존재합니다.
대체 구현:
보다 일반적인 구현에서는 메소드를 일반으로 선언하고 IEnumerable
public static class LinqExtras { public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b) { return !b.Except(a).Any(); } }
이 접근 방식을 사용하면 다음을 사용하여 한 목록에 다른 목록의 모든 요소가 포함되어 있는지 쉽게 확인할 수 있습니다.
IEnumerable<int> a = new List<int> { 1, 2, 3, 4 }; IEnumerable<int> b = new List<int> { 2, 4, 6, 8 }; bool containsAll = a.ContainsAllItems(b); // False
위 내용은 .NET은 하나의 목록에 다른 목록의 모든 항목이 포함되어 있는지 확인하는 기본 제공 기능을 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!