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 的数组。

谢谢

4

2 回答 2

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 回答
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显然返回两个元素放入数组中。因此,您只需要迭代循环 3 次而不是 6 次,以便将所有需要的值放入arrayMain.

于 2013-06-01T04:53:25.150 回答