Скажем, у меня есть запрос OData, который выглядит следующим образом (мой фактический запрос гораздо сложнее):
Orders.Select(z => new { z.SubOrder.Addresses,
z.SubOrder.Cost,
z.SubOrder.SubOrderId,
z.Sequence});
Это отлично работает. За исключением того, что у объекта Address есть подобъект (StateRef). Поскольку StateRef выполняет поиск в таблице состояний, она возвращается как нулевая.
Для иллюстрации приведем пример того, как может выглядеть адрес объекта Address:
Address:
string Street 1
string Street 2
StateRef PrimaryState
string City
// ... 42 other string attributes not shown ...
У объекта StateRef
есть имя состояния, но также есть некоторые другие важные свойства состояния (возможно, птица состояния?)
Итак, что мне интересно, так это то, нужно ли мне сейчас создавать "подпроекцию" для z.SubOrder.Addresses, которая содержит все 46 атрибутов, чтобы я мог получить доступ к PrimaryState
? (Надеюсь, что нет)
Помимо того, что я гораздо больше пишу, это также означает, что я должен использовать анонимные типы. Что делает мое отображение должно быть вручную (вместо использования AutoMapper).
Итак, что я ищу, так это способ "развернуть" StateRef внутри проекции?
Что-то вроде этого:
Orders.Select(z => new { z.SubOrder.Addresses.Expand("PrimaryState"),
z.SubOrder.Cost, ^
z.SubOrder.SubOrderId, |
z.Sequence}); |
|
// This is not allowed by the compiler ----------+
Попытка это дает эту ошибку:
Неверный анонимный член объявления типа. Члены анонимного типа должны быть объявлены с назначением члена, простым именем или доступом члена.
Обновление: вот пример запроса, чтобы проиллюстрировать, о чем я спрашиваю:
Users.Take(10).Select(x=>new { x.Id, x.Reputation, x.Comments})
Запустите это для " data.stackexchange.com/stackoverflow/atom ". Вы увидите, что Комментарии имеют объект Post, который возвращает ноль.
Мне нужно, чтобы вернуть значения внутри него.
Примечание: я знаю, что могу вручную напечатать все их в "суб" проекции. Читайте выше, почему я этого не хочу.