Вот расписанный по операциям код - он работает
XElement Image = new XElement("Image");
XAttribute URL = new XAttribute("url", input[i].massive[17]);
Image.Add(URL);
XElement Images = new XElement("Images");
Images.Add(Image);
Ad.Add(Images);
А вот, код записанный в одну строчку, он не работает, хотя по идее должен делать то же самое.
Ad.Add(new XElement("Images").Add(new XElement("Image").Add(new XAttribute("url", input[i].massive[17]))));
Чем отличаются эти два куска кода?
Метод Add имеет тип возврата void - то есть он ничего не возвращает.
Это ничего невозможно вставить куда-либо. Visual Studio, если навести курсор на код, выдаёт сообщение об этом:
cannot convert from 'void' to 'object'.
В одну строку код можно переписать следующим образом:
Ad.Add(new XElement("Images", new XElement("Image", new XAttribute("url", input[i].massive[17]))));
Тут используются конструкторы типов XElement, XAttribute.
Код можно отформатировать так, чтобы было видно иерархию вложенности:
Ad.Add(
new XElement("Images",
new XElement("Image",
new XAttribute("url", input[i].massive[17]))));
Сборка персонального компьютера от Artline: умный выбор для современных пользователей