掌握複雜物件結構的 LINQ 笛卡爾積
在處理複雜的物體結構時,從多隻狗產生所有可能的小狗組合是一個獨特的挑戰。 幸運的是,LINQ 提供了優雅的解決方案。
一種方法涉及笛卡爾積,這是一種有效組合多個集合以產生所有可能配對的技術。 如果事先(在編譯時)知道狗集的數量,則簡單的 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>
此查詢產生以下結果:
<code>{ {p11, p21, p31}, {p11, p21, p32}, {p12, p21, p31}, {p12, p21, p32} }</code>
每個元素代表一個匿名類型,其中包含唯一的小狗組合。
但是,當狗集的數量是動態的(編譯時未知)時,需要更靈活的方法。 Eric Lippert 的文章 (https://www.php.cn/link/f28c49d8be62973ac7716e0b87dae2f9) 提供了為此目的而設計的 CartesianProduct<T>
方法。 使用此方法,查詢簡化為:
<code class="language-csharp">CartesianProduct(from dog in person.Dogs select dog.Puppies)</code>
這會產生與前面的範例相同的結果 - 一組序列,每個序列代表一個不同的小狗組合。
總之,LINQ 的靈活性允許對複雜資料結構進行高效的笛卡爾積計算,從而促進富有洞察力的資料分析。
以上是如何使用 LINQ 笛卡兒積產生所有小狗組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!