gpt4 book ai didi

C# 扩展 where 方法 - 处理未找到元素的情况

转载 作者:太空宇宙 更新时间:2023-11-03 22:23:34 25 4
gpt4 key购买 nike

我正在尝试使用 xDocument 和 LINQ to XML 查询这个非常复杂的 XML 文档.我要执行以下操作:

获取满足特定条件的所有元素,如果不满足,则从 xDocument 返回另一个属性。

例子:

<cars>
<car>
<patrol type="oil">
<url> http://Toyotaoil.com </url>
</patrol>
</car>
<car>
<patrol type="oil">
<url> http://BMWoil.com </url>
</patrol>
<patrol type="gas">
<url> http://BMWgas.com </url>
</patrol>
</car>
<car>
<patrol type="gas">
<url> http://Hondagas.com </url>
</patrol>
</car>

现在我想从此查询中获得的是油类巡逻列表,除非汽车不使用汽油,然后我对汽油就满意了。

如果我使用 where 子句,我只会错过汽车使用汽油的情况。有没有像 where 子句这样的东西,我可以在其中指定不满足条件时要做什么?

最佳答案

下面的解决方案应该可以让您灵活地查询任何您喜欢的内容:

var result = from car in xdoc.Element("cars").Elements("car") 
let patrols = car.Elements("patrol")
let oils = patrols.Where(patrol => patrol.Attribute("type") == "oil")
select new {
Car = car,
Patrols = (oils.Any() ? oils : patrols)
}

我这里没有 Visual Studio,所以我希望它能编译 :)
提供更多有关您喜欢选择的信息,我将为您提供更具体的 LINQ 语句。

关于C# 扩展 where 方法 - 处理未找到元素的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2257448/

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