gpt4 book ai didi

c# - 使用 Linq 从 XML 填充类

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

我有以下 XML

<?xml version="1.0" encoding="utf-8"?>
<Applications xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Blocks>
<Block Name="block1">
<Attributes>
<Tag>Attribute1</Tag>
<Layer>layer1</Layer>
</Attributes>
<Attributes>
<Tag>Attribute2</Tag>
<Layer>layer2</Layer>
</Attributes>
</Block>
<Block Name="block2">
<Attributes>
<Tag>Attribute1</Tag>
<Layer>layer0</Layer>
</Attributes>
</Block>
</Blocks>
</Applications>

我想使用 linq 语句来捕获所有细节并使用以下类填充列表。即列表

public class Block
{
public string Tag { get; set; }
public string Layer { get; set; }
}

我试过...

List<Block> data =
(from a in xdoc.Root.Elements("Blocks")
where (string)a.Attribute("Name") == "block1"
select new Block
{
Tag = (string)a.Element("Tag"),
Layer = (string)a.Element("Layer")
}).ToList();

你能看出我哪里出错了吗,linq 的新手。

最佳答案

尝试:

LAMBDA 语法:

xdoc.Root.Elements("Blocks").Elements("Block")
.Where(w => (string)w.Attribute("Name") == "block1")
.Elements("Attributes")
.Select(s => new Block
{
Tag = (string)s.Element("Tag"),
Layer = (string)s.Element("Layer")
});

如果要使用查询语法:

from a in (from b in xdoc.Root.Elements("Blocks").Elements("Block")
where (string)b.Attribute("Name") == "block1"
select b).Elements("Attributes")
select new Block
{
Tag = (string)a.Element("Tag"),
Layer = (string)a.Element("Layer")
};

关于c# - 使用 Linq 从 XML 填充类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21177045/

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