LINQ to Entities投影嵌套列表

cto*_*orx 7 c# linq-to-entities entity entity-framework

假设这些对象......

class MyClass
{
     int ID {get;set;}
     string Name {get;set;}
     List<MyOtherClass> Things {get;set;}
}

class MyOtherClass
{
     int ID {get;set;}
     string Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

如何使用下面的投影执行LINQ to Entities Query,它会给我一个List?这与IEnumerable工作正常(假设MyClass.Things是IEnumerable,但我需要使用List)

MyClass myClass = (from MyClassTable mct in this.Context.MyClassTableSet
                        select new MyClass
                        {
                             ID = mct.ID,
                             Name = mct.Name,
                             Things = (from MyOtherClass moc in mct.Stuff
                                       where moc.IsActive
                                       select new MyOtherClass
                                       {
                                            ID = moc.ID,
                                            Value = moc.Value
                                       }).AsEnumerable()
                        }).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

Cra*_*ntz 14

你没有.你必须在L2O中做这个部分.

所以你可以这样做:

var q = (from MyClassTable mct in this.Context.MyClassTableSet
         select new // note anonymous type; important!
         {
             ID = mct.ID,
             Name = mct.Name,
             Things = (from MyOtherClass moc in mct.Stuff
                       where moc.IsActive
                       select new MyOtherClass
                       {
                           ID = moc.ID,
                           Value = moc.Value
                       }
          }).AsEnumerable();

MyClass myClass = (from mct in q
                   select new MyClass
                   {                 
                       ID = mct.ID,
                       Name = mct.Name,
                       Things = mct.Things.ToList()
                   }).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

在一个查询中无法执行此操作.