处理 linq to xml 查询中的空异常

本文关键字:异常 查询 linq to xml 处理 | 更新日期: 2023-09-27 18:16:25

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时引发的空异常。

处理 linq to xml 查询中的空异常

这将检查元素是否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();