LINQを使用して、可能なすべての組み合わせを生成します
プログラミングでは、多くの場合、すべての要素の組み合わせが複数のリストから必要です。この問題では、2つの配列を組み合わせて、各文字列が特定の順序で要素で接続されているシーンについて説明します。
solution
配列のすべての可能な組み合わせを生成するために、デカルトを使用してテクノロジーを蓄積できます。これには、入力配列内のすべての可能な要素の組み合わせが含まれる新しいリストの作成が含まれます。生成されたリストには、入力数の長さの入力に等しい要素の総数があります。
LINQ(言語統合照会)は、デカルトの蓄積を実行し、必要な組み合わせを生成するためのエレガントな方法を提供します。重要なのは、2つのシーケンスの要素を単一の要素シーケンスに組み合わせたZIP演算子を使用することです。次のコードは、LINQを使用して可能なすべての組み合わせを生成する方法を示しています。
ここでは、cartesianproduct関数は、列挙性によって作成されたシーケンスのデカルトを生成します。 zipコンピューティングシンボルは、各シーケンスの要素を文字列に結合します。
生成された結果は、弦シーケンスのシーケンスであり、可能性のある組み合わせを示しています。コードしてから、繰り返してコンソールに印刷します:
<code class="language-csharp">var arr1 = new[] { "a", "b", "c" }; var arr2 = new[] { 3, 2, 4 }; var result = from cpLine in CartesianProduct( from count in arr2 select Enumerable.Range(1, count)) select cpLine.Zip(arr1, (x1, x2) => x2 + x1);</code>
この方法は、2つの配列で要素の可能な組み合わせを直接生成する方法を提供します。 LINQの式の構文とデカルトの原理を使用して、必要な結果を効率的に取得します。
以上がLINQは、2つの配列からすべての可能な文字列の組み合わせをどのように生成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。