LINQ를 사용하여 강아지 세트의 데카르트 곱 생성
LINQ는 SQL 기능을 미러링하여 데카르트 곱을 생성하기 위한 우아한 솔루션을 제공합니다. 사람, 개, 그리고 각 개가 키우는 강아지가 관련된 시나리오를 통해 이를 설명해 보겠습니다. 목표는 개인이 소유한 각 개 중에서 강아지 한 마리를 선택하여 가능한 모든 강아지 조합을 생성하는 것입니다.
알려진 세트 수
개 세트(및 강아지 세트)의 수가 미리 결정된 경우 간단한 LINQ 쿼리로 충분합니다.
<code class="language-csharp">from p1 in dog1.Puppies from p2 in dog2.Puppies from p3 in dog3.Puppies select new { p1, p2, p3 };</code>
이 쿼리는 dog1
, dog2
, dog3
각각에서 하나씩 모든 강아지 조합을 생성합니다.
세트 수 알 수 없음
알 수 없는 수의 개 세트를 처리하려면 보다 유연한 접근 방식이 필요합니다.
CartesianProduct<T>
메서드: 재귀 메서드 CartesianProduct<T>
가 생성됩니다. 이 메소드는 강아지 세트를 나타내는 IEnumerable<T>
시퀀스를 허용합니다.
재귀적 구현: CartesianProduct<T>
메소드는 입력 시퀀스에서 가능한 모든 조합을 재귀적으로 생성합니다.
이 방법을 사용하면 데카르트 곱이 간결하게 구해집니다.
<code class="language-csharp">CartesianProduct(from dog in person.Dogs select dog.Puppies);</code>
이 한 줄은 가능한 모든 강아지 조합을 생성하여 개인에 속한 각 개 중에서 한 마리의 강아지가 선택되도록 합니다.
집합 연산과 재귀를 활용하는 이 LINQ 기반 접근 방식은 입력 집합 수에 관계없이 효율적으로 데카르트 곱을 생성하여 강력하고 적응 가능한 솔루션을 제공합니다.
위 내용은 강아지 세트의 데카르트 곱을 효율적으로 생성하기 위해 LINQ를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!