包括派生类EF的属性

时间:2014-01-17 11:24:51

标签: c# entity-framework

案例:我有一个公司列表,每个公司包含一个商店和一些其他属性,如地址,名称,......商店可以是FruitStore类型或类型为VegetableStore(两者都来自商店)。如果商店是一个水果店,我想要包含一个对于fruitstore而言唯一的属性,例如TheBestOrange(它是一个对象)。

如何在查询中包含theBestOrange以及公司的属性?

我有

companies.Include(s => s.Store)
         .OfType<FruitStore>()
         .Include(a => a.theBestOrange)

但这会将我的返回类型更改为水果商店列表而不是公司列表

我希望自己清楚明白。

1 个答案:

答案 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
});