[英]Handle null element in linq
我正在读取XML中的数据。 我遇到了一个值为null的问题,我不确定处理它的最佳方法。 下面是一段代码。 街道地址2在此XML中不存在,但在其他XML中不存在,因此我需要使其足够动态以处理两个实例。
var storeInfo = storeRows.Descendants("Store").Select(s => new
{
storeName = s.Element("StoreName").Value,
streetAddress1 = s.Element("StreetAddress1").Value,
streetAddress2 = s.Element("StreetAddress2").Value
});
{
foreach (var st in storeInfo)
{
alStoreName.Add(st.storeName.ToString());
alStreet1.Add(st.StreetAddress1.ToString());
alStreet2.Add(st.StreetAddress2.ToString());
}
}
使用显式强制转换而不是访问Value
属性
var storeInfo = storeRows.Descendants("Store").Select(s => new
{
storeName = (string)s.Element("StoreName"),
streetAddress1 = (string)s.Element("StreetAddress1"),
streetAddress2 = (string)s.Element("StreetAddress2")
});
如果该元素不存在,则将返回null
。
另外,我建议您创建一个class
来封装商店信息,而不是将信息存储在不同的列表中。 然后只需要一个storeInfo
列表而不是匿名类型列表:
var storeInfo = storeRows.Descendants("Store").Select(s => new StoreInfo
{
storeName = (string)s.Element("StoreName"),
streetAddress1 = (string)s.Element("StreetAddress1"),
streetAddress2 = (string)s.Element("StreetAddress2")
});
您应该使用(string)XElement
显式(string)XElement
而不是Value
属性。 当元素不存在时,它将返回null
。
streetAddress2 = (string)s.Element("StreetAddress2")
您可以将XElement
为上面的大多数基本类型, string
, DateTime
, Guid
和Nullable<T>
。 请在此处查看完整列表: XElement类型转换
同样的规则适用于XAttribute
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.