gpt4 book ai didi

c# - LINQ to XML 使用 idref 连接

转载 作者:数据小太阳 更新时间:2023-10-29 02:05:11 25 4
gpt4 key购买 nike

我有一个如下所示的 XML 结构:

[...]
<Fruits>
<Fruit>
<Specification>id_1001_0</Specification>
<Weight>23</Weight>
</Fruit>
</Fruits>
<FruitSpecification id="id_1001_0">
<Type>Apple</Type>
</FruitSpecification>
[...]

我想使用 Linq to XML 将其读入(非匿名)对象。假设我有以下代码:

var fruits = from xele in xDoc.Root.Element("Fruits").Elements("Fruit")
select new Fruit()
{
Weight = xele.Element("Weight").Value
}

我如何扩展查询以加入正确的 FruitSpecification 标签?目标是能够这样写:

var fruits = from xele in xDoc.Root.Element("Fruits").Elements("Fruit")
//some join?
select new Fruit()
{
Weight = xele.Element("Weight").Value,
Type = xjoinedelement.Element("Type").Value
}

我希望这是可以理解的,我做了这个“水果”样本,我的实际 XML 复杂得多......

最佳答案

是的,简单的连接就可以解决问题:

var fruits = 
from f in xdoc.Root.Element("Fruits").Elements("Fruit")
join fs in xdoc.Root.Elements("FruitSpecification")
on (string)f.Element("Specification") equals (string)fs.Attribute("id")
select new Fruit()
{
Weight = (int)f.Element("Weight"),
Type = (string)fs.Element("Type")
};

水果类定义:

public class Fruit
{
public int Weight { get; set; }
public string Type { get; set; }
}

关于c# - LINQ to XML 使用 idref 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600479/

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