我有三张桌子大陆,乡村和城市。我需要制作一个大陆类型的对象,其国家和国家都有自己的城市。
大陆 - >国家/地区 - >像这样的城市。欧洲 - >德国 - >法兰克福,柏林等。
我的代码:
public partial class Continent
{
public Continent()
{
this.Countries = new HashSet<Country>();
}
public int ContinentId { get; set; }
public string ContinentName { get; set; }
public virtual ICollection<Country> Countries { get; set; }
}
public partial class Country
{
public Country()
{
this.Cities = new HashSet<City>();
}
public int CountryId { get; set; }
public string CountryName { get; set; }
public Nullable<int> ContinentId { get; set; }
public virtual ICollection<City> Cities { get; set; }
public virtual Continent Continent { get; set; }
}
public partial class City
{
public int CityId { get; set; }
public string CityName { get; set; }
public int CountryId { get; set; }
public virtual Country Country { get; set; }
}
var Result = (from a in db.Continents
join b in db.Countries
on a.ContinentId equals b.ContinentId
join c in db.Cities on b.CountryId equals c.CountryId
where a.ContinentId == 1
select new
{
ContinentName = a.ContinentName,
CountryName = b.CountryName,
CityName = c.CityName
});
结果如下:
我需要创建一个类型为Continent的对象,其中包含自己的县和城市
答案 0 :(得分:3)
使用命名空间System.Entity.Data;
var continent = db.Continents
.Include(c => c.Countries.Select(cn => cn.Cities))
.FirstOrDefault(c => c.ContinentId == 1);
答案 1 :(得分:0)
要获得您指出的结果,您可以执行以下操作:
using (var context = new MyContext()) {
var data =
context
.Continents
.SelectMany(continent =>
continent
.Countries
.SelectMany(country =>
country
.Cities
.Select(city =>
new {
ContinentName = continent.Name,
CountryName = country.Name,
CityName = city.Name
}
)
)
).ToList();
// do something with data
}