데카르트 곱 연산은 여러 세트를 결합하여 입력 세트의 가능한 모든 요소 조합을 포함하는 새 세트를 생성합니다.
제공된 클래스 구조(한 사람에게 여러 마리의 개가 있고 각 개에 여러 마리의 강아지가 있는 경우)에서 데카르트 곱 연산을 수행하려면 LINQ를 효과적으로 활용할 수 있습니다.
먼저 여러 집합을 입력으로 사용하는 데카르트 곱 함수를 만듭니다.
<code>public static IEnumerable<IEnumerable<T>> CartesianProduct<T>(params IEnumerable<T>[] sets) { if (sets.Length == 0) { return new[] { Enumerable.Empty<T>() }; } return sets[0].SelectMany(x => sets.Skip(1).Aggregate( new[] { x }, (acc, set) => CartesianProduct(acc, set) // 修正此处 )); }</code>
그런 다음 각 강아지의 강아지 세트에 기능을 적용합니다.
<code>var puppyCombinations = CartesianProduct( from dog in person.Dogs select dog.Puppies );</code>
이렇게 하면 각 내부 시퀀스가 각 개에서 강아지 한 마리의 조합을 나타내는 시퀀스 시퀀스가 생성됩니다. 결과 조합은 필요에 따라 액세스하고 처리할 수 있습니다. (여기의 코드는 CartesianProduct
함수 구현에 따라 가독성과 효율성 향상을 위해 약간 조정되었습니다.)
참고: 위의 CartesianProduct
기능 구현에서는 견고성과 효율성을 보장하기 위해 빈 컬렉션이나 기타 극단적인 경우를 처리하기 위해 추가 개선이 필요할 수 있습니다. 더 깔끔하고 이해하기 쉬운 재귀 구현이 더 적합할 수 있습니다.
위 내용은 LINQ를 사용하여 여러 세트의 데카르트 곱을 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!