.NET에는 하나의 목록에 다른 목록의 모든 항목이 포함되어 있는지 확인하는 내장 방법이 있습니까?
문제:
목록에 다음이 포함되어 있는지 확인하는 메서드(ContainsAllItems)가 있습니다. 목록의 모든 요소 b. 이 기능이 이미 .NET에 내장되어 있어 작업이 중복될 가능성이 있는지 궁금합니다.
답변:
예, .NET 3.5 이상에서는 수행원 메서드:
public static class LinqExtras { public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b) { return !b.Except(a).Any(); } }
사용법:
List<int> a = new List<int>() { 1, 2, 3, 4 }; List<int> b = new List<int>() { 2, 3 }; bool result = a.ContainsAllItems(b); // True
이 메서드는 b와 a 사이의 차이 집합(b.Except(a))을 수행하여 다음을 반환합니다. a에 없는 b의 요소. 그런 다음 Any() 메서드를 사용하여 집합 차이에 요소가 있는지 확인하고 결과를 반전하여 a가 b의 모든 항목을 포함하는지 확인합니다.
참고:
원래 ContainsAllItems 메서드도 유효한 솔루션이지만 LINQ를 사용하는 접근 방식보다 효율성이 약간 떨어집니다. LINQ 버전은 지연 평가를 활용하므로 목록에 항목 수가 많은 경우 잠재적으로 작업 수행량이 줄어듭니다.
위 내용은 .NET은 한 목록에 다른 목록의 모든 요소가 포함되어 있는지 확인하는 기본 제공 방법을 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!