我有查询包含对象(ex门)的对象列表(ex房间) 门有许多属性(如宽度,高度,颜色),但我只需要颜色。选择属性实体ef linq
现在我有
Rooms.include(r => r.Door)
但这需要门的所有属性。 如果我做
Rooms.include(r => r.Door.color)
比它说,颜色是不是门的航行性能。
我该如何选择颜色?
我希望我明确自己。任何帮助表示赞赏
我有查询包含对象(ex门)的对象列表(ex房间) 门有许多属性(如宽度,高度,颜色),但我只需要颜色。选择属性实体ef linq
现在我有
Rooms.include(r => r.Door)
但这需要门的所有属性。 如果我做
Rooms.include(r => r.Door.color)
比它说,颜色是不是门的航行性能。
我该如何选择颜色?
我希望我明确自己。任何帮助表示赞赏
包含不用于选择,它用于告诉编译器该属性应该包含在查询中。只需使用选择来获取颜色并包括选择中的房间。
编辑:答案是在提供附加信息后编辑的。
Rooms.Select(r => new {Color = r.Door.color, Room = r) ;
这将只选择门颜色,而不是房间 –
如在谢尔盖的评论中所述,这只是选择颜色,所以返回类型不匹配房间列表 –
@SergeyBerezovskiy是的,我回答之前的额外提供了信息。 –
不幸的是,您不能有条件地加载相关实体的属性 - 您要么加载整个门实体,要么不加载该实体。但你可以使用匿名类型来返回它的房间和门的颜色:
var rooms = from r in db.Rooms
select new {
Room = r,
DoorColor = r.Door.Color
};
不只是匿名。如果实体具有公共属性,则可以使用Select语句和集合初始值设定项将其转换为另一个Door对象。 – Flater
gues我需要返回具有不同属性的自定义视图列表,而不是聚合空间。 thx帮助 –
@Flater能否详细说明您提到的收集初始值设定项? –
你想装入房间,或只是门颜色列表没有任何有关房间的信息? –
我也需要房间 –