案例:我有一个公司列表,每个公司包含一个商店和一些其他属性,如地址,名称,......商店可以是FruitStore类型或类型为VegetableStore(两者都来自商店)。如果商店是一个水果店,我想要包含一个对于fruitstore而言唯一的属性,例如TheBestOrange(它是一个对象)。
如何在查询中包含theBestOrange以及公司的属性?
我有
companies.Include(s => s.Store)
.OfType<FruitStore>()
.Include(a => a.theBestOrange)
但这会将我的返回类型更改为水果商店列表而不是公司列表
我希望自己清楚明白。
答案 0 :(得分:0)
我假设您要在查询中包含所有商店,而不仅仅是水果商店。您不能投影到某些对象包含属性而其他对象不包含的对象列表,因为它们是不同的类型。所以它必须是一个可以为空的财产。也许是这样的(未经测试):
var query = companies.Select(c => new {
CompanyProp1 = c.CompanyProp1,
CompanyProp2 = c.CompanyProp2,
StoreProp1 = c.Store.StoreProp1,
TheBestOrange = c.Store is FruitStore ? ((FruitStore)c.Store).theBestOrange : null
});