Как использовать анонимные типы с Netflix OData API - PullRequest
0 голосов
/ 29 декабря 2010

Если я создам эту коллекцию:

IEnumerable<_TITLE> _titles = null;

Как установить набор результатов из Netflix в этом выражении:

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

Я получаю:

Невозможно неявно преобразовать тип 'System.Linq.IQueryable' в 'System.Collections.Generic.IEnumerable <_Title>'. Явное преобразование существует (вы пропустил актерский состав?)

Я понимаю, что это потому, что я использую анонимный тип. _TITLE - это пользовательский сложный объект, который я создаю, который предоставляет подмножество свойств Netflix.

Если я добавлю «_TITLE» перед «новым», это говорит о том, что мой объект не реализует IENUMBERABLE.

Если тогда _TITLE реализует IENUMBERABLE, он говорит, что _TITLE не содержит определения для ADD и все еще получает ошибку преобразования.

По сути, я хочу установить свойства _TITLE для данных, возвращаемых из Netflix. Я определил _TITLE, чтобы он содержал нужные мне поля, а также коллекцию PERSON (для Cast).

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

В дополнение к ответу vcsjones, вам не нужно реализовывать IEnumerable в _TITLE. Что происходит, когда вы пишете

var foo = new TYPENAME { a, b };

это означает:

  1. создайте новое TYPENAME, которое реализует IEnumerable
  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 голос
/ 29 декабря 2010

Если ваш универсальный тип _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 можно использовать, даже если вы не собираетесь использовать анонимный тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...