說我有一個OData的查詢,看起來像這樣的投影(選擇)(我的實際查詢要複雜得多):展開了WCF數據服務(OData的)
Orders.Select(z => new { z.SubOrder.Addresses,
z.SubOrder.Cost,
z.SubOrder.SubOrderId,
z.Sequence});
這工作得很好。除Address對象上有一個子對象(StateRef)。由於StateRef在狀態表上進行查找,它將返回爲空值。
爲了說明,這裏的地址對象地址可能外觀的示例:
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 ----------+
嘗試這給這個錯誤:
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
更新: 下面是一個例子查詢來說明什麼,我問:
Users.Take(10).Select(x=>new { x.Id, x.Reputation, x.Comments})
針對「data.stackexchange.com/stackoverflow/atom」運行。你會看到Comments有一個返回null的Post對象。
我需要那個返回裏面的值。
注意:我知道我可以手動輸入到「子」投影中。閱讀上面爲什麼我不想要那樣。
因爲只有展開,似乎在第一個孩子的工作就可以反轉查詢?因此,對於您的SO示例,請從評論開始,例如(c => c.User).Expand(c => c.Post).Take(10) – Phil 2013-02-11 17:53:39
@Phil,Alas,no。這個例子很簡單,但我的實際查詢非常複雜,有幾個「子部分」。 – Vaccano 2013-02-11 19:16:00
鏈接已死。 – 2017-08-29 15:28:52