>데이터 베이스 >MySQL 튜토리얼 >LINQ를 사용하여 여러 세트의 데카르트 곱을 계산하려면 어떻게 해야 합니까?

LINQ를 사용하여 여러 세트의 데카르트 곱을 계산하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-17 07:01:09213검색

How Can LINQ Be Used to Calculate the Cartesian Product of Multiple Sets?

LINQ를 사용하여 데카르트 곱 찾기

데카르트 곱 연산은 여러 세트를 결합하여 입력 세트의 가능한 모든 요소 조합을 포함하는 새 세트를 생성합니다.

제공된 클래스 구조(한 사람에게 여러 마리의 개가 있고 각 개에 여러 마리의 강아지가 있는 경우)에서 데카르트 곱 연산을 수행하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.