如何做到这一点,这样它就会显示&;No value &;而不是陷入错误
本文关键字:value No 错误 显示 这一点 何做 | 更新日期: 2023-09-27 18:16:10
我使用下面的代码,只要我没有一个子节点(例如URL)缺失。如果它那我的代码就出错了。我怎么能使它不出错,只是返回一个字符串"无值"代替。
这是我的代码
string widgetsInfo =
loaded.Descendants("widget")
.Select((w, i) =>
new
{
WidgetIndex = i,
URL = w.Descendants("url").FirstOrDefault().Value,
Category = w.Descendants("PortalCategoryId").FirstOrDefault().Value
})
.Select(w => String.Format("Index:{0}; URL:{1}; CATEGORY:{2}; ",
w.WidgetIndex, w.URL, w.Category))
.Aggregate((acc, next) => acc + Environment.NewLine + next);
这是我要解析的xml
string xml = @"<?xml version='1.0' encoding='UTF-8'?>
<widgets>
<widget>
<url>~/Portal/Widgets/ServicesList.ascx</url>
<castAs>ServicesWidget</castAs>
<urlType>ascx</urlType>
<parameters>
<PortalCategoryId>3</PortalCategoryId>
</parameters>
</widget>
<widget>
<url>www.omegacoder.com</url>
<castAs>ServicesWidget</castAs>
<urlType>htm</urlType>
<parameters>
<PortalCategoryId>41</PortalCategoryId>
</parameters>
</widget>
</widgets>";
string widgetsInfo =
loaded.Descendants("widget")
.Select((w, i) =>
new
{
WidgetIndex = i,
URL = w.Descendants("url").FirstOrDefault() == null ? "No Value" : w.Descendants("url").FirstOrDefault().Value,
Category = w.Descendants("PortalCategoryId").FirstOrDefault() == null ? "No Value" : w.Descendants("PortalCategoryId").FirstOrDefault().Value
})
.Select(w => String.Format("Index:{0}; URL:{1}; CATEGORY:{2}; ",
w.WidgetIndex, w.URL, w.Category))
.Aggregate((acc, next) => acc + Environment.NewLine + next);
试试DefaultIfEmpty
linq子句