Как увидеть метод Children (). ToList () в объекте JEnumerable <JToken>? - PullRequest
4 голосов
/ 12 января 2012

Я пытаюсь проанализировать JSON по JSON.NET, и в классе App все в порядке, но если я хочу написать метод синтаксического анализа в пользовательском классе, VS не видит метод ToList() в JEnumerable<JToken> объекте.

Листинг:

JObject newsResponse = JObject.Parse(e.Result);
IList<JToken> results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children().ToList(); //Here don't see ToList()
List<News> newsResults = new List<News>();

foreach (JToken result in results)
{
    News searchResult = JsonConvert.DeserializeObject<News>(result.ToString());
    newsResults.Add(searchResult);
}

Ошибка:

'Newtonsoft.Json.Linq.JEnumerable' не содержит определения для ToList и не имеет расширенияметод 'ToList', принимающий первый аргумент типа 'Newtonsoft.Json.Linq.JEnumerable', может быть найден (вам не хватает директивы using или ссылки на сборку?)

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Вам не нужно использовать ToList() здесь.

var results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children(); 

Это создаст коллекцию Enumerable (lazy), которую можно использовать с вашим foreach ниже.

Примечание: IЯ использую var, так как я не знаю точный тип, возвращаемый здесь, но мы на самом деле не заботимся о нем, и это, вероятно, довольно сложно, так что это действительно полезно.

2 голосов
/ 10 февраля 2015

Поскольку я не могу комментировать ответ jv42 и так как я не люблю анонимные типы, я буду немного опираться на его ответ.

Вам не нужно использовать .ToList(), как указано выше, и результаты станут JEnumerable, которые можно foreach 'отредактировать через:

JEnumerable results = newsResponse["NewsResponse"]["NewsItems"]["NewsItem"].Children();

foreach( JToken result in results )
{
    Console.WriteLine(result.ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...