嵌套的IEnumerable

时间:2017-08-16 12:30:19

标签: c#

我有一个大的IEnumerable,我想分成几个。

// I want to do this

    public A Method1(B b)
    {
      return Method2(b);
    }

好的我的代码 //应委托工作的切换器方法

public IEnumerable<BufTrade> Split(BufTrade bufRecord)
{
  switch(someFlag)
 {
   case "A":

     // does not compile
     return Impl1(bufTrade);

     // does not compile
     yield return Impl1(bufTrade);
 }
}

// implements for type A    
public IEnumerable<BufTrade> Impl1(BufTrade bufRecord)
{
 yield return trade1;
 yield return trade2;

 // etc
}

1 个答案:

答案 0 :(得分:1)

有点不清楚你要做什么,但是由于Impl1返回IEnumerable<BufTrade>Split也返回相同的内容,你需要从{{循环返回的值每个Impl1Split中的1}}:

yield return

这是一个相当尴尬的代码,但如果你想在这种情况下使用// in Split: foreach (var i in Impl1(bufRecord)) { yield return i; } ,那就是你需要做的。换句话说,您希望yield return成为枚举函数。

你的尝试只是:

Split

不能使用(使用您提供的代码),因为并非所有路径都返回值。另请注意,您无法混合return Impl1(bufTrade); yield return。你有一个使用return的枚举器函数,或者你有一个只使用yield return的常规函数​​