Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq中的句柄空元素_C#_Linq_Linq To Xml - Fatal编程技术网

C# linq中的句柄空元素

C# linq中的句柄空元素,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我正在从XML读取数据。我遇到了一个值为null的问题,我不确定处理它的最佳方法。下面是一段代码。街道地址2在这个XML中不存在,但在其他XML中存在,因此我需要使它具有足够的动态性来处理这两个实例 var storeInfo = storeRows.Descendants("Store").Select(s => new { storeName = s.Element("StoreName").Value, streetAddress1 = s.Element("Stre

我正在从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());
    }
}

使用显式强制转换,而不是访问
属性

var storeInfo = storeRows.Descendants("Store").Select(s => new
{
    storeName = (string)s.Element("StoreName"),
    streetAddress1 = (string)s.Element("StreetAddress1"),
    streetAddress2 = (string)s.Element("StreetAddress2")
});
如果元素不存在,则返回
null

此外,我建议您创建一个
来封装存储信息,而不是将信息存储在不同的列表中。然后,只需列出
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
显式强制转换,而不是
属性。当元素不存在时,它将返回
null

streetAddress2 = (string)s.Element("StreetAddress2")
您可以将
XElement
强制转换为上述大多数基元类型、
string
DateTime
Guid
Nullable
。请参阅此处的完整列表:


同样的规则也适用于
XAttribute

与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”或签名。见”。