gpt4 book ai didi

C# 在使用 LINQ to XML 时检查元素是否存在

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:43 26 4
gpt4 key购买 nike

好吧,有点随意的问题,但最好的方法是只添加代码,你马上就能明白我的意思:

XML:

<?xml version="1.0" encoding="utf-8" ?>
<customers>
<customer>
<id>1</id>
<name>Blah-face</name>
<Type>1</Type>
</customer>
<customer>
<id>2</id>
<name>Blah-face-2</name>
<Type>2</Type>
</customer>
<customer>
<id>3</id>
<name>Blah-face-3</name>
<Type>1</Type>
<SuperType>1</SuperType>
</customer>
</customers>

C#:

XDocument linquee = XDocument.Load(path);

var superType = (from c in linquee.Descendants("customer")
where (c.Element("SuperType").Value == "1")
select c).ToList();

这会产生一个空错误——我是否需要在每个客户之前为每个客户添加一个空值的“SuperType”元素,或者是否有一种解决方法意味着我不必这样做?

干杯!

最佳答案

试试这个:

var superType = (from c in from c in linquee.Descendants("customer")
where (string) c.Element("SuperType") == "1"
select c).ToList();

基本上,如果您将一个空的 XElement 引用转换为 string,您将得到一个空引用(您可以将其与“1”进行比较)。

另一种方法是转换为 int? 如果元素缺失,哪个 (IIRC) 将返回 null int? 值,但如果元素存在则返回 bang 但是非数字:

var superType = (from c in from c in linquee.Descendants("customer")
where (int?) c.Element("SuperType") == 1
select c).ToList();

关于C# 在使用 LINQ to XML 时检查元素是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com