6
鑑於這樣的事情:優雅的方式來應對鏈的XElement軸方法空引用
var results = theElement.Element("Blah").Element("Whatever").Elements("Something");
有一種優雅的方式來處理空胡說或任何元素,從而導致剛剛在這些空或空案件?
我知道我可以拆分查詢並手動進行這些檢查,但想知道是否有更簡潔的東西。
鑑於這樣的事情:優雅的方式來應對鏈的XElement軸方法空引用
var results = theElement.Element("Blah").Element("Whatever").Elements("Something");
有一種優雅的方式來處理空胡說或任何元素,從而導致剛剛在這些空或空案件?
我知道我可以拆分查詢並手動進行這些檢查,但想知道是否有更簡潔的東西。
你可以添加一些擴展方法來爲你做這個。對於Element
方法,您將返回null或元素本身。對於Elements
方法,您將返回空結果或目標元素。
這些擴展方法:
public static class XElementExtensions
{
public static XElement ElementOrDefault(this XElement element, XName name)
{
if (element == null)
return null;
return element.Element(name);
}
public static IEnumerable<XElement> ElementsOrEmpty(this XElement element, XName name)
{
if (element == null)
return Enumerable.Empty<XElement>();
return element.Elements(name);
}
}
可以以這種方式使用它們:
var query = theElement.ElementOrDefault("Blah")
.ElementOrDefault("Whatever")
.ElementsOrEmpty("Something");
if (query.Any())
// do something
else
// no elements
如果你沒有查詢ElementsOrEmpty
和您的最後一個請求是ElementOrDefault
你會檢查爲null而不是使用Enumerable.Any
方法。
完美。謝謝。 – MangoBrainz
希望從鍵盤到.net framework v.next。 –