Вы можете использовать:
p.Elements(rdfs + "range").SingleOrDefault()
, который вернет null
, если нет элементов.Он выдаст исключение, если имеется более одного совпадающего элемента - FirstOrDefault()
позволит избежать этого, если это нежелательное поведение.
РЕДАКТИРОВАТЬ: Согласно моему комментарию, а также использовать преобразование из XAttribute в строкуОбработка пустых значений:
return (from p in ontology.Elements(rdf + "Property")
select new MetaProperty
{
About = p.Attribute(rdf + "about").Value,
Name = p.Element(rdfs + "label").Value,
Comment = p.Element(rdfs + "comment").Value,
RangeUri = (string) p.Elements(rdf + "range")
.Attributes(rdf + "resource")
.FirstOrDefault()
}).ToList();
Если у вас во многих местах одна и та же вещь, вы можете написать метод расширения, который очень легко инкапсулирует это:
RangeUri = (string) p.FindAttribute(rdf + "range", rdf + "resource")