我正在尝试从xml获取值,而我的空值有问题。我正在使用此查询从属性“RODZ”获取所有非空值,并且此代码有效,但它也返回空值:/
XDocument loaded = XDocument.Load(@"c:\TERC.xml");
var q = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
select r.Descendants("col").Where(col1 =>
col1.Attribute(XName.Get("name")).Value ==
"RODZ").Where(kc => kc.ToString() != "").FirstOrDefault().Value ?? "0").ToList();
对我来说,这是一个很大的问题,因为我必须将所有值解析为int,并且此查询不起作用:
var q = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
select int.Parse(r.Descendants("col").Where(col1 =>
col1.Attribute(XName.Get("name")).Value ==
"RODZ").Where(kc => kc.ToString() != "").FirstOrDefault().Value ?? "0")
).ToList();
我想在值为null时得到0,因为我稍后将其转换为Enum。
你看到这段代码有什么用吗?
<?xml version="1.0" encoding="UTF-8" ?>
<teryt>
<catalog name="Compix">
<row>
<col name="NAME">Name1</col>
<col name="ID"/>
</row>
<row>
<col name="NAME">Name2</col>
<col name="ID">1</col>
</row>
<row>
<col name="NAME">Name3</col>
<col name="RODZ">2</col>
</row>
</catalog>
</teryt>
答案 0 :(得分:1)
你的问题在于:
where(kc => kc.ToString() != "")
将其更改为:
where(kc => !string.IsEmptyOrNull(kc.Value))