让我们假设一个名为data.xml中有以下内容的XML文件:C#中的LINQ to 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>
我需要搜索的所有记录,其中任何一个字段(ID,姓名,恢复或规格)的含有一个给定的值。我已创建此代码
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错误,因为并非所有记录都包含所有字段。 我如何测试当前记录是否有给定的元素,然后再定义要应用的条件?防爆。记录[@ ID = 3]没有简历。
在此先感谢
非常感谢您! – adaoss 2010-11-07 15:58:49