等效 LINQ 查询的 C# 代码

标签 c# arrays linq

我有以下 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 的数组。

谢谢

最佳答案

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

关于等效 LINQ 查询的 C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869162/

相关文章:

c# - 当单击另一个表单中的按钮提交时,如何在 C# 中重新加载表单?

c# - 将包含类实例的结构体的变量分配给另一个变量

c# - 在不使用 .Result 的情况下如何在 C# 中不能异步的方法中调用异步方法

c - 在 c 中访问数组元素

javascript - 检查多个字符串以匹配多个正则表达式(均为数组)

c - C中二维数组的名称

c# - 如何将 IEnumerable<t> 或 IQueryable<t> 转换为 EntitySet<t>?

c# - 将字符串拆分为等长 block 的正则表达式

c# - LINQ to SQL 查询返回重复项

c# - Func<T, bool> 的逻辑逆