0

私はこれを正しい方法で行っているかどうかはわかりません。私はSilverlightアプリケーションを持っており、多くの場合、Entity Frameworkを使用しています。私はデータベースにマップされた2つのエンティティを持っています:ヘッダーと詳細。ヘッダーレコードに詳細レコードがない場合でも、すべてのヘッダーと詳細の数を取得するために、左外部結合をサブミットする必要があります。ここでLINQのクエリは、私がクライアントから実行したいです:これはシルバーですので、私はその後、私のクエリを構築する上で、私のドメインサービス(コンテキストからstoreContext.Load<T>()方法でそれをサーバーに提出する必要があり Silverlight - LinqToEntities - 匿名のタイプを返す方法

var query = 
     from head in storeContext.Headers 
     join detail in storeContext.Details 
     on head.HeadId equals details.HeadId 
     into group 
     select new 
     { 
     Desc = head.Description, 
     MyCount = group.Count() 
     }; 

クライアント)。このメソッドは型を予期しているので、上のように匿名型を返すように呼び出しを構造化する方法はわかりません。

私はこれをすべて間違っていますか?私はこのようなもののためにInvokeメソッドを使用すべきですか?もしそうなら、返すタイプをどのように定義すればいいですか?

誰かが正しい方向に私を指摘することができますか、私はそれを本当に賛美します。

おかげで...スコット

+0

あなたがAnnonymousの型を返すことはできません、あなたがWCF RIAにいるかどうか、あるいは – sebagomez

+0

の可能な複製が[匿名の型を返す]であるかどうかは関係ありません。(http://stackoverflow.com/questions/534690/return-anonymous-type) – nawfal

答えて

5

匿名のタイプを返すことはできません。彼らは、必然的に、現在のスコープのローカルです。

あなたのクエリは正しいように見えますが、あなたが名前付きの型を返す必要があります:あなたのクエリメソッドはIEnumerable<MyHelper>を返却する必要があります

var query = 
     from head in storeContext.Headers 
     join detail in storeContext.Details 
     on head.HeadId equals details.HeadId 
     into group 
     select new MyHelper // SPECIFY A CLASS HERE 
     { 
     Desc = head.Description, 
     MyCount = group.Count() 
     }; 

を:

public IEnumerable<MyHelper> GetInfo() 
{ 
    var query ... 

    return query; 
} 
+0

匿名型は 'dynamic'でラップしていますか? –

+0

@Jeff - 私はまだ「ダイナミック」で遊んでいないが、私は知らない。 – ChrisF

+0

私はどちらも、私は今好奇心が強いです。それは必ずしも良いアイデアだとは思っていませんが、興味深いものはありません。 –

1

あなたは方法から匿名型のインスタンスである値を返すことはできません。匿名のタイプはです。メソッドのローカルでは常にです。 WCFで型を返す場合は、匿名型に頼るのではなく、自分でクラスを作成する必要があります。

関連する問題