2010-12-28 5 views
0

と匿名型を使用するには:どのように私はこのコレクションを作成する場合はNetflixのOData API

私はこの表現ではNetflixから結果セットを設定するにはどうすればよい
IEnumerable<_TITLE> _titles = null; 

:私は取得しています

_titles = from t in Titles where t.Id == "ApUFq" select new {t, t.Cast} 

を:

は、暗黙のうちにSyの「タイプ 'System.Linq.IQueryable' に変換できません。集約。一般.IEnumerable < _Title> '。 明示的な変換は、(あなたがキャストを逃し ある?)

私は匿名型を使用していますので、それはです理解して存在しています。 _TITLEは、Netflixプロパティのサブセットを公開するカスタム複合オブジェクトです。

「新しい」の前に「_TITLE」を追加すると、オブジェクトにIENUMBERABLEが実装されていないと表示されます。

_TITLEにIENUMBERABLEが実装されている場合、_TITLEにはADDの定義が含まれておらず、変換エラーが発生しています。

基本的に、Netflixから返されたデータで_TITLEプロパティを設定したいとします。 _TITLEに必要なフィールドと、PERSON(キャスト用)のコレクションを含めるように定義しました。

+0

修正してくださいコンストラクタを丸括弧を使用して呼び出すためのもの、あなたのテキストを正しくフォーマットするようにします –

答えて

1

ジェネリックタイプが_TITLEの場合は、select new _TITLE {Prop = Value}を実行する必要があります。

あなたがジェネリック型を使用する場合、あなたはvarを使用する必要があります。

var _titles = from t in Titles where t.Id == "ApUFq" select new {t, t.Cast}; 

ので、おそらくこれはあなたが何を意味するのかである。これらの線に沿って

var _titles = from t in Titles where t.Id == "ApUFq" select new _TITLE {Title = t}; 

は何か。 varは、匿名型を使用しない場合でも使用できます。

1

vcsjonesの回答に加えて、_TITLEにIEnumerableを実装する必要はありません。何が起こっているのは、あなたが

var foo = new TYPENAME { a, b }; 

を書くとき、それは意味していることである:

  1. はIEnumerableを実装する新しいTYPENAMEを作成
  2. コールfoo.Add(a)は、その後foo.Add(B);

例:

var names = new List<string> { "Joe", "Mary", "Susan" }; 

vcsjonesが述べたように、あなたがオブジェクトを初期化するときにパラメータ名を使用する必要がある、または多分あなたは

var title = new _TITLE { Title = t.ID, Cast = t.Cast }; 
// or 
var title = new _TITLE (t.ID, t.Cast); 
+1

なぜ彼は_TITLEに 'IEnumerable'を実装する必要がありますか?私はこれが動作すると思われる方法は、LINQの操作戻り値IEnumerable <_TITLE>だと思います。私が考えていた問題は、{}をオブジェクト初期化子として使うことを意味するコレクション初期化子として使用していたことでした。 – vcsjones

関連する問題