1

我已经使用 LINQ 大约 2 天了,所以请多多包涵。

这是我当前的代码;

_resultList = (
from
    item in _documentRoot.Descendants("MyItems")
select
    new MyClass
    {
        XMLID = item.Attribute("id").Value
    }).ToList<MyClass>();

大多数元素都有一个“id”属性,并且它们被成功添加到列表中。但是,有些没有“id”。对于这些,我希望 'id' 只是一个空字符串。

如何在尝试访问之前检查该属性是否存在?谢谢

4

2 回答 2

8

您不需要将属性存储在附加变量中。如果属性不存在,则将属性转换为字符串将返回null。借助null-coalescing 运算符的强大功能,您可以提供默认值 - 空字符串:

from item in _documentRoot.Descendants("MyItems")
select new MyClass {
        XMLID = (string)item.Attribute("id") ?? ""
    }
于 2013-09-18T08:02:19.997 回答
5

您可以将其存储在一个变量中,并根据此变量是否为 null 定义 XMLID 属性的值:

from item in _documentRoot.Descendants("MyItems")
let idAttr = item.Attribute("id")
select new MyClass
{
    XMLID = idAttr != null ? idAttr.Value : string.Empty
}).ToList<MyClass>();
于 2013-09-18T07:48:24.040 回答