2014-01-13 6 views
1

У меня есть запрос для списка объектов (ex Rooms), который содержит объект (ex Door) Дверь имеет много свойств (например, ширина, высота, цвет), но мне нужен цвет.выбрать свойства объекта ef linq

теперь у меня есть

Rooms.include(r => r.Door) 

но это берет на себя все свойства двери. если я сделать

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

чем это говорит, что цвет не является навигационным свойством двери.

Как я могу выбрать только цвет?

Надеюсь, я ясно дал понять. любая помощь с благодарностью

+0

Вы хотите, чтобы номера были загружены или просто список цветов дверей, без информации о комнатах? –

+0

Мне тоже нужны номера –

ответ

1

Include не используется для выбора, используется для указания компилятору, что свойство должно быть включено в запрос. Просто используйте выделение, чтобы получить цвет, и включите «Комнаты» в выбранном.

Редактировать: ответ был отредактирован после получения дополнительной информации.

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

Это будет выбирать только цвета дверей вместо номеров –

+0

, как указано в комментарии Сергея, это только выбирает цвет, поэтому тип возвращаемого номера не соответствует списку номеров больше –

+0

@SergeyBerezovskiy Да, я ответил перед дополнительным была предоставлена ​​информация. –

1

К сожалению, вы не можете условно загрузить свойства связанного объекта - вы либо загружаете объект сущности, либо не включаете эту сущность. Но вы можете использовать анонимный тип для возврата номера и цвета его двери:

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

Не просто анонимный. Если объект имеет общедоступные свойства, он может просто передать его другому объекту Door с помощью оператора Select и инициализатора коллекции. – Flater

+1

gues Мне нужно вернуть список пользовательского вида с разными свойствами вместо общей комнаты, чем. thx за помощью –

+0

@Flater вы можете подробно рассказать о инициализаторе коллекции, о котором вы упоминаете? –

Смежные вопросы