次の LINQ を使用できます。
int[] prod = (from x in Enumerable.Range(0, array1.Length).Select((z) => array1[z] * array2[z]) where x != 0 select x).ToArray();
0
これは、係数の 1 つが 0 の場合にのみ乗算の結果になり得るという事実を利用しています。
編集
私はあなたの質問で少し逃しました。両方の要素が正のエントリを乗算します。その場合、@Lee が提供した LINQ コードを使用する必要があります。
EDIT 2
辞書を使用することを提案した回答に対するあなたのコメントを読んだので、後でどのインデックスがどの結果を生成したかを確認できます。
「接続を維持する」とはどういう意味ですか。リストと辞書の両方を使用すると、同じインデックスが保持されると思います。私は正しいですか?
arr1
ここで与えられたすべてのソリューションは、およびより少ないか等しい数の要素を持つリストまたは配列を生成しますarr2
。これは、最悪の場合、どのインデックスが乗算の結果を生成したかがわからないことを意味します。
元の回答のコードは次のように出荷されます。配列には、 and とprod
同じ数の要素が必要です。そうしないと、例外が発生します。arr1
arr2
0
同様に、配列内の要素は、このインデックスのいずれかまたはprod
その位置にあることの結果でしかありません。これは、リストを作成するときに失われる情報です。したがって、辞書を使用することをお勧めします。辞書を使用すると、インデックスが結果にマップされますが、含まれる要素は少なくなります。arr1
arr2
<= 0