Я использую HtmlAgilityPack
для получения данных с веб-сайта для проекта хобби. Я хочу получить номер статьи обуви с сайта, который продает обувь.Запрос linq должен возвращать строку
Но мой запрос linq не возвращает строку. Вместо этого он возвращает тип:
System.Linq.Enumerable.WhereSelectEnumerableIterator<HtmlAgilityPack.HtmlNode,string>
Как я могу получить запрос, чтобы просто вернуть строку?
foreach (var node in query)
{
Shoe shoe = new Shoe();
var num = from x in node.Descendants()
where x.Name == "img" && x.Attributes.Contains("class") && x.Attributes["class"].Value == "thumb lazy"
select x.Attributes["title"].Value.Substring(11);
shoe.articleNumber = Convert.ToInt32(num); //error
shoes.Add(shoe);
}
Ошибка: InvalidCastException был необработанным.
Unable to cast object of type 'WhereSelectEnumerableIterator`2[HtmlAgilityPack.HtmlNode,System.String]' to type 'System.IConvertible'.
+1 для перечисления всех четырех вариантов. OP - обратите внимание на разницу между First/Single и First/SingleOrDefault: исключение, отличное от умолчания, если не найдено, а по умолчанию будет возвращено значение по умолчанию для возвращаемого типа. – bland
Это работает и очень понятно. Благодарю. Я знал, что что-то не так, но неправильно попытался изменить node.Descendants на node.FirstOrDefault. –