Самый простой способ - привести к string
вместо использования свойства Value
.Таким образом, вместо этого вы получите null
ссылку для Description
.
Однако ваш код также можно сделать лот лучше:
XNamespace ns = "http://schemas.microsoft.com/LiveSearch/2008/04/XML/web";
var results = data.Descendants(ns + "Results")
.Elements()
.Select(x => new Result
{
URL = (string) x.Element(ns + "Url"),
Title = (string) x.Element(ns + "Title"),
Description = (string) x.Element(ns + "Description"),
DateTime = (string) x.Element(ns + "DateTime")
})
.ToList();
Видите, насколько это проще?Используемые методы:
- Вызов
ToList()
по пустой последовательности в любом случае дает вам список - Таким образом, вы будете выполнять запрос только один раз;прежде чем вы вызываете
Count()
, который потенциально мог бы выполнять итерацию по каждому узлу.В общем, используйте Any()
вместо Count() > 0)
- но на этот раз проще сделать список безусловным. - Используйте метод
Elements()
для получения дочерних элементов, а не приведения несколько раз.(Ваш предыдущий код вызвал бы исключение, если бы он обнаружил какие-либо неэлементные узлы) - Используйте неявное преобразование из строки в
XNamespace
- Используйте оператор
+(XNamespace, string)
, чтобы получитьXName