using System; using System.Collections.Generic; using System.Linq; namespace FizzBuzz { static class Program { static IEnumerable<string> FizzBuzz() { for (var i = 1; ; i++) { var result = ""; if ( i % 3 == 0 ) result += "Fizz"; if ( i % 5 == 0 ) result += "Buzz"; yield return result == "" ? i.ToString() : result; } } static void Main(string[] args) { foreach ( var s in FizzBuzz().Take(100) ) { Console.WriteLine(s); } } } } 短くしてみた using System; using System.Collections.Generic; using System.Linq; namespace FizzBuzz { static class Program { static void Main(string[] args) { var filter = new Dictionary<int,string>() {{3, "Fizz"}, {5, "Buzz"}}; Enumerable.Range(1, 100).Select(i => filter.Where(kv => (i % kv.Key) == 0).Aggregate("", (s, kv) => s += kv.Value, s => s == "" ? i.ToString() : s)).ToList().ForEach(Console.WriteLine); Enumerable.Range(1, 100).Select(i => filter.Where(kv => (i % kv.Key) == 0) .Aggregate("", (s, kv) => s += kv.Value, s => s == "" ? i.ToString() : s)) .ToList().ForEach(Console.WriteLine); } } } //改行してもいいのよ