我想使用单个LINQ查询来使用EntityFramework填充数据库实体中的嵌套列表.
我有3个表实体.第一类Cities
包含List
和Houses
包含List
.
那些课程:
class Cities { long CityId {get;set;} string Name {get;set;} ListHouses {get;set;} } class Houses { long CityId {get;set;} string Address {get;set;} List Residents {get;set;} } class Residents { long HouseId {get;set;} string FirstName {get;set;} string LastName {get;set;} }
我想要实现的是这样的:
var cities = ( from city in db.Cities select new // Creating anonymous type to fill List of Houses { CityId = city.CityId, Name = city.Name, Houses = db.Houses.Where(h=>h.CityId == city.CityId) .Select( new // Another anonymous type, but this time this isn't working { HouseId = h.HouseId, Address = h.Address, Residents = db.Residents.Where(r=>r.HouseId == h.HouseId).ToList() }).ToList() .Select( h => new Houses { HouseId = h.HouseId, Address = h.Address, Residents = h.Houses }).ToList() }) .ToList() .Select( c=> new Cities { CityId = c.CityId Name = c.Name, Houses = c.Houses }).ToList()
不幸的是我收到了错误The entity or complex type Houses cannot be constructed in a LINQ to Entities
.
它的工作原理,仅供参考Houses = db.Houses.Where(h=>h.CityId ==city.CityId).ToList()
.但与我失去Residents
在Houses
.
甚至可以使用一个LINQ查询吗?
您只需要将房屋和居民纳入您的城市查询:
var cities = db.Cities.Include(c => c.Houses.Select(h => h.Residents)).ToList();