【问题标题】:Yield return a bunch of elements [duplicate]产量返回一堆元素[重复]
【发布时间】:2016-09-25 20:31:51
【问题描述】:

我有一个返回MyClass 列表的方法。在该方法中,我将MyClass 列表拆分为较小的块,例如 500 个元素。现在我想知道这是否可以与yield-statement 一起使用。目前我有这个代码。但是,我很好奇是否有一种方法可以在没有这个凌乱的第二个内部循环的情况下让全部返回。

IEnumerable<MyClass> DoSomething() 
{
    List<MyClass> myList = ...
    foreach(var chunk in myList.Chunk(500))  // split the list in smaller lists
    {
        foreach(MyClass m in chunk) yield return m;
    }
}

这当然可行,但我想知道我是否也可以使用yield 来延迟返回全部。

【问题讨论】:

  • Chunk 是做什么的?
  • 它将列表拆分为列表列表
  • 你能分享一下实现吗?
  • @TrevorPilley 当然,请参阅stackoverflow.com/questions/419019/…
  • 重复是我已经担心的:这是不可能的。要么按照 Sean 的建议返回一个列表列表,要么迭代每一束的元素并将其返回。

标签: c# yield-return


【解决方案1】:

假设Chunk 返回某种List&lt;&gt;,您可以这样做:

IEnumerable<IList<MyClass>> DoSomething() 
{
    List<MyClass> myList = ...
    foreach(var chunk in myList.Chunk(500))  // split the list in smaller lists
    {
        yield return chunk;
    }
}

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2015-12-03
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多