将linq中的null异常处理为xml查询

时间:2014-08-05 17:37:08

标签: c# xml linq

var qXML = (from nm in xelement.Descendants("EmployeeFinance")
            where nm.Element("Status").Value.Contains(status) && int.Parse(nm.Element("Empersonal_Id").Value) == ele.EmpId
            select nm).SingleOrDefault();

以上是我的示例代码。现在存在ele.EmpId将出现在xml和实例中的情况。如何处理找不到ele.EmpId时抛出的null异常。

1 个答案:

答案 0 :(得分:0)

这将检查元素是否为null且元素是否包含非空/空字符串值,并且在它尝试解析之前,如果它们中的任何一个检查失败,它将短路。

var qXML = (from nm in xelement.Descendants("EmployeeFinance")
            where nm.Element("Status").Value.Contains(status) && 
            ((nm.Element("Empersonal_Id") != null) && 
             !string.IsNullOrEmpty(nm.Element("Empersonal_Id").Value) &&
             int.Parse(nm.Element("Empersonal_Id").Value) == ele.EmpId)
            select nm).SingleOrDefault();