簡體   English   中英

如何在此C#LINQ to XML語句中檢查NullReferenceException?

[英]How can I check for a NullReferenceException in this C# LINQ to XML statement?

我如何在此C#LINQ to XML語句中檢查NullReferenceException,而無需將整個內容包裝在try / catch中? 如果任何屬性為null,我希望它仍然嘗試獲取剩余數據。

謝謝。

XElement doc = XElement.Load("test.xml");

var nodes =
   from node in doc.Elements("Customer")
   select new
   {
       Name = node.Element("FullName").Value,
       Zip = node.Element("ZipCode").Value,
       Active = node.Element("ActiveCustomer").Value,
   }; 

只需使用顯式強制轉換。 如果找不到該元素,它將返回null ,不會導致異常。

var nodes =
from node in doc.Elements("Customer")
select new
{
   Name = (string)node.Element("FullName"),
   Zip = (string)node.Element("ZipCode"),
   Active = (string)node.Element("ActiveCustomer"),
}; 

使用三元運算符。

三元運算符

XElement doc = XElement.Load("test.xml");

var nodes =
from node in doc.Elements("Customer")
select new 
{
  Name = node.Element("FullName") !=null ? node.Element("FullName").Value : null,
  Zip = node.Element("ZipCode") !=null ? node.Element("ZipCode").Value : null,
  Active = node.Element("ActiveCustomer") !=null ? node.Element("ActiveCustomer").Value : null
};

您可以嘗試以下方法:

select new
{
    Name = node.Element("FullName")!=null ? node.Element("FullName").Value : null,
    Zip = node.Element("ZipCode")!=null ? node.Element("ZipCode").Value : null,
    Active = node.Element("ActiveCustomer")!=null ? node.Element("ActiveCustomer").Value : null
}; 

? 是條件運算符。 有關此問題的更多文檔,請在此處查看

您可以使用三元運算符檢查null

這樣做:

var nodes =
from node in doc.Elements("Customer")
select new
{
    Name = node.Element("FullName") !=null ? node.Element("FullName").Value : null,
    Zip = node.Element("ZipCode") !=null ? node.Element("ZipCode").Value : null,
    Active = node.Element("ActiveCustomer") !=null ? node.Element("ActiveCustomer").Value : null
}; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM