using System.Collections.Generic;
using System.Data.Entity;
using System.Linq.Dynamic.Core;
public static void Main()
private static void SelectMany()
var context = new EntityContext();
var result = context.Xes.Where("Id > 10").SelectMany("x => x.items.Select(r => new (r.name, r.price))").ToDynamicArray();
Console.WriteLine("All item-names : {0}", string.Join(", ", result));
private static void SelectMany_Dynamic()
var context = new EntityContext();
var result = context.Xes.Where("Id > 10").SelectMany("items").Select("new (name, price)");
FiddleHelper.WriteTable(result);
public static void GenerateData()
var xCollection = new List<X>();
for(var j = 1; j <20;j++){
var yCollection = new List<Y>();
for (var i = 0; i < 10; i++){
name = "Name as x.id="+ xId + " y.id=" + i,
Console.Write("X Ids: ");
foreach(var item in xCollection){
Console.Write(item.Id + ", ");
using (var context = new EntityContext())
context.Xes.AddRange(xCollection);
context.BulkSaveChanges();
public class EntityContext : DbContext
public EntityContext() : base(FiddleHelper.GetConnectionStringSqlServer())
public DbSet<X> Xes { get; set; }
public ICollection<Y> items {set;get;}
public string name {set;get;}
public int price {set;get;}
public int count {set;get;}