簡體   English   中英

等效 LINQ 查詢的 C# 代碼

[英]C# code for equivalent LINQ query

我有以下 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 的數組。

謝謝

那么它會是這樣的:

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();

我希望我理解你正確。

在非常基本的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM