が、私はこのようになりますのODataクエリがあるとWCFデータサービス(ODataの)用の突起(選択)で展開します。は(私の実際のクエリは、はるかに複雑である)
Orders.Select(z => new { z.SubOrder.Addresses,
z.SubOrder.Cost,
z.SubOrder.SubOrderId,
z.Sequence});
これが正常に動作します。ただし、Addressオブジェクトにはサブオブジェクト(StateRef)があります。 StateRefはStateテーブルでルックアップを行うため、nullとして返されます。ここでは、説明するために
は、アドレスオブジェクトアドレスがどのように見えるかの例です:
Address:
string Street 1
string Street 2
StateRef PrimaryState
string City
// ... 42 other string attributes not shown ...
StateRef
オブジェクトは、それに状態の名前を持っていますが、また他のいくつかの重要な状態プロパティ(多分状態を持っています鳥?)
これで、PrimaryState
アイテムにアクセスできるように、46個のすべての属性を含むz.SubOrder.Addressesの「サブプロジェクション」を作成する必要がありますか? (私は希望しない)
より多くのコーディング方法とは別に、匿名タイプを使用する必要があることも意味します。これは私のマッピングを(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"に対して実行します。コメントにはnullを返すPostオブジェクトがあることがわかります。
私はその中の値を返す必要があります。
注:手動で「サブ」投影にすべて入力することができます。なぜ私はそれが欲しくないのかを上記で読んでください。
のみ展開しているので、あなたのクエリを反転させることができる最初の子で動作するようですか?だからあなたのSOの例では、コメントで開始します。コメント。拡張(c => c.User)。拡張(c => c.Post).Take(10) – Phil
@Phil、Alas、no。この例は単純ですが、実際のクエリは非常に複雑で、いくつかの「サブセクション」があります。 – Vaccano
リンクが無効です。 –