Предположим, что xml-файл с именем data.xml имеет следующее содержимое:
<root>
<record>
<id>1</id>
<name>test 1</name>
<resume>this is the resume</resume>
<specs>these are the specs</specs>
</record>
<record>
<id>2</id>
<name>test 2</name>
<resume>this is the resume 2</resume>
</record>
<record>
<id>3</id>
<name>test 3</name>
<specs>these are the specs 3</specs>
</record>
</root>
Мне нужно искать все записи, где любое из этих полей (идентификатор, имя, резюме или спецификации) содержит заданное значение. Я создал этот код
XDocument DOC = XDocument.Load("data.xml");
IEnumerable<ProductRecord> results = from obj in DOC.Descendants("record")
where
obj.Element("id").Value.Contains(valueToSearch) ||
obj.Element("name").Value.Contains(valueToSearch) ||
obj.Element("resume").Value.Contains(valueToSearch) ||
obj.Element("specs").Value.Contains(valueToSearch)
select new ProductRecord {
ID = obj.Element("id").Value,
Name = obj.Element("name").Value,
Resume = obj.Element("resume").Value,
Specs = obj.Element("specs").Value
};
Этот код выдает ошибку NullReference, поскольку не все записи имеют все поля.
Как я могу проверить, есть ли у текущей записи данный элемент, прежде чем определить условие для применения? Ex. Запись [@ ID = 3] не имеет резюме.
Заранее спасибо