选择实体ef linq的属性

时间:2014-01-13 14:56:59

标签: c# linq entity-framework

我查询了包含对象的对象列表(ex Rooms)(ex Door) 门有许多属性(ex宽度,高度,颜色),但我只需要颜色。

现在我有

Rooms.include(r => r.Door) 

但这会占用门的所有属性。 如果我做了

Rooms.include(r => r.Door.color) 

比它说颜色不是门的导航属性。

我怎样才能选择颜色?

我希望自己清楚明白。任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

Include不用于选择,它用于告诉编译器该属性应该包含在查询中。只需使用选择来获取颜色,并在选择中包含房间。

编辑:在提供其他信息后编辑了答案。

Rooms.Select(r => new {Color = r.Door.color, Room = r) ;

答案 1 :(得分:1)

不幸的是,您无法有条件地加载相关实体的属性 - 您要么加载整个门实体,要么不包含该实体。但是你可以使用匿名类型来返回它的门的颜色和空间:

 var rooms = from r in db.Rooms
             select new {
                 Room = r,
                 DoorColor = r.Door.Color
             };