产量返回一堆元素

时间:2016-05-27 13:17:08

标签: c# yield-return

我有一个返回MyClass列表的方法。在该方法中,我将MyClass列表分成更小的块,假设500个元素。现在我想知道这是否可能与yield - 语句一起使用。目前我有这个代码。但是我很好奇是否有一种方法可以在没有这个混乱的第二内循环的情况下返回整个束。

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来推迟整个群体。

1 个答案:

答案 0 :(得分:0)

假设Chunk返回某种List<>,你可以这样做:

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