public static IEnumerable<string> FizzBuzz(int max) {
  var fizz = Fizz();
  var buzz = Buzz();
  foreach (var i in Enumerable.Range(1, max)) {
    bool isFizz = fizz.First();
    bool isBuzz = buzz.First();
    fizz = fizz.Skip(1);
    buzz = buzz.Skip(1);
    if (isFizz && isBuzz) {
      yield return "FizzBuzz";
    } else if (isFizz && !isBuzz) {
      yield return "Fizz";
    } else if (!isFizz && isBuzz) {
      yield return "Buzz";
    } else {
      yield return i.ToString();
    }
  }
}
こんな感じのメソッドを作ってみたのですが、複数のIEnumerableを並行して進めながら処理するforeachみたいなのってないのでしょうか?
自前でFizzとBuzzを1つずつ進めてるのがいまいちスマートじゃない気がして、複数のIEnumerableを並行して進める手軽な方法ってないでしょうか?
foreach (var i, isFizz, isBuzz in Enumerable.Range(1, max), Fizz(), Buzz()) {
とかみたいな雰囲気でまとめて書く方法ってないですか?