using System.Collections;
using System.Collections.Generic;
public static void Main()
List<int> myarr = new List<int>(new [] {1, 2, 3, 4});
foreach(int i in myarr.SelectMany(x => MagicFunction(x))) {
foreach(MyObj i in myarr.SelectMany(x => MagicFunctionObj(x))) {
Console.Write("|" + i.MyInt);
foreach(dynamic i in myarr.SelectMany<int, dynamic>(x => MagicFunctionDyn(x))) {
Console.Write("||" + i.MyInt);
public static IEnumerable<int> MagicFunction(int x) {
for(int i = 0; i < x; i++) {
public static IEnumerable<MyObj> MagicFunctionObj(int x) {
for (int i = 0; i < x; i++) {
yield return new MyObj { MyInt = i };
public static IEnumerable<dynamic> MagicFunctionDyn(int x) {
for (int i = 0; i < x; i++) {
yield return new { MyInt = i };
public int MyInt {get; set;}