2

次の LINQ クエリを取得しましたが、同等の通常の C# コードを知りたいです。

int[] arrayMain = new int[6];

return (from i in Enumerable.Range(0, arrayMain.Length / 2)
       from c in ReturnArrayOfLengthTwo()
       select c).ToArray();

このクエリの出力は、長さ 6 の配列として送信されます。ただし、ReturnArrayOfLengthTwo は arrayMain から 2 つのランダムな場所を選択し、長さ 2 の配列を作成して返すため、順序について知りたいと思います。

ありがとう

4

2 に答える 2

1

非常に基本的な C# (LINQ、ジェネリック、拡張メソッドなどを使用しない) では、次のようになります。

int[] arrayMain = new int[6];

// Filling the arrayMain with two elements, so increment i by 2
// arrayMain[0], arrayMain[1] (first loop)
// arrayMain[2], arrayMain[3] (second loop)
// arrayMain[4], arrayMain[5] (third loop)
for (int i = 0; i < arrayMain.Length - 1; i += 2)
{
    // Returns two elements to insert into the arrayMain array.
    int[] returnedArray = ReturnArrayOfLengthTwo();

    arrayMain[i] = returnedArray[0];
    arrayMain[i + 1] = returnedArray[1];
}

簡単に言えば、 はReturnArrayOfLengthTwo明らかに配列に入れる 2 つの要素を返します。したがって、必要なすべての値を に入れるには、ループを 6 回ではなく 3 回繰り返すだけで済みますarrayMain

于 2013-06-01T04:53:25.150 に答える
1

それは次のようになります。

var list = new List<int>();

for (int i = 0; i <= arrayMain.Length / 2; i++)
    foreach (int j in ReturnArrayOfLengthTwo())
        list.Add(j);

return list.ToArray();

私はあなたが正しいことを理解したと思います.

于 2013-06-01T04:48:00.857 に答える