집 >데이터 베이스 >MySQL 튜토리얼 >LINQ는 어떻게 여러 개로부터 가능한 모든 강아지 조합을 효율적으로 생성할 수 있습니까?
LINQ는 데카르트 곱을 구현합니다
한 사람이 여러 마리의 개를 소유하고 각 개마다 여러 마리의 강아지를 키우는 클래스 구조가 있고 각 강아지의 각 조합에 대해 하나씩 가능한 모든 강아지 조합을 생성하는 LINQ 솔루션을 찾고 싶다고 가정합니다. 강아지를 선택합니다.
여기에는 집합을 곱하여 고유한 요소 조합을 생성하는 데카르트 곱의 개념이 적용됩니다. SQL 테이블은 이에 대한 간단한 솔루션을 제공하지만 LINQ는 우아한 접근 방식을 제공합니다.
먼저 컴파일 타임에 세트(개)의 개수가 알려진 경우를 생각해 보세요. 간단한 LINQ 쿼리를 사용할 수 있습니다.
<code>var combinations = from p1 in dog1.Puppies from p2 in dog2.Puppies from p3 in dog3.Puppies select new {p1, p2, p3};</code>
이 쿼리는 일련의 익명 유형을 생성하며, 각 유형은 각 강아지의 강아지 조합을 나타냅니다.
그러나 컴파일 타임에 컬렉션 수를 알 수 없는 경우에는 보다 동적인 접근 방식이 필요합니다. LINQ를 사용하여 데카르트 곱을 계산하는 방법을 알아보려면 Eric Lippert의 기사를 참조하세요.
https://www.php.cn/link/f28c49d8be62973ac7716e0b87dae2f9
CartesianProduct 메소드를 얻은 후:
<code>var combinations = CartesianProduct(from dog in person.Dogs select dog.Puppies);</code>
이렇게 하면 각 내부 시퀀스에 각 개에서 나온 강아지 한 마리의 조합이 포함된 시퀀스 시퀀스가 반환됩니다.
요약하자면 개 수가 정적이든 동적이든 LINQ를 사용하면 원하는 강아지 조합을 생성할 수 있습니다.
위 내용은 LINQ는 어떻게 여러 개로부터 가능한 모든 강아지 조합을 효율적으로 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!