【问题标题】:.NET Linq. Confusion about SelectMany.NET Linq。对 SelectMany 的困惑
【发布时间】:2012-07-24 16:57:14
【问题描述】:

在给定的代码示例中,为什么我们使用 x.ToArray() ? 每个元素 x 已经是一个数组不是吗?

请让我不那么困惑:)

    var array1 = new int[3] { 1, 2, 3 };     //New integer array
    var array2 = new int[3] { 4, 5, 6 };     //New integer array
    var array3 = new int[3] { 7, 8, 9 };     //New integer array

    IList<int[]> list4 = new List<int[]> { array1, array2, array3 };

    var theManyList = list4.SelectMany(x => x.ToArray()).ToList();

【问题讨论】:

标签: arrays list select linq


【解决方案1】:

你不需要它。你可以这样做:

list4.SelectMany(x => x).ToList();

原因正如你所说,数组已经是数组。 SelectMany 采用IEnumerable&lt;T&gt;,因此无需添加额外操作。为什么有人在一个例子中这样做,不知道。也许他们试图明确表示您必须传递一个 IEnumerable?

【讨论】:

  • 是对的。 SelectMany 消耗IEnumerable,因此从 x 中创建一个数组是没有意义的——即使它不是一个数组,而只是一个“IEnumerable”。 然而有时.ToArray() 在 Linq 语句中使用以防止延迟执行。
  • @achitaka-san - 很好地呼吁防止延迟执行,我没有想到这种情况。大多数时候,当我执行任何 LINQ 时,我都希望延迟执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多