gpt4 book ai didi

c# - 如何使用 LINQ 在 XML 中按名称获取多个元素

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

我有以下 XML:

<?xml version="1.0" standalone="yes"?>
<TestSuite>
<TestCase Name="XXX" ID="123;234; 345; 456">
<CodeBlock />
</TestCase>
<TestCase Name="East" ID="11,22,33, 44, 55">
<CodeBlock />
</TestCase>
</TestSuite>

我需要获取所有 ID 并按 ID ASC 对它们进行排序,下面是我的 Linq:

var r = (from lv1 in xdoc.Descendants("TestCase")
select new { ID = lv1.Attribute("ID").Value })
.Where(d => d.ID != string.Empty)
.GroupBy(l => l.ID)
.ToList();

我现在得到:

123;234; 345; 456
11,22,33, 44, 55

但是我怎样才能得到像这样的 ID:

11
22
33
44
55
123
234
345
456

最佳答案

不清楚为什么要分组...您只需要拆分值并使用 SelectMany 将其展平, 从外观上看:

var separators = new[] { ';', ',' };
var r = xdoc.Descendants("TestCase")
.Select(x => (string) x.Attribute("ID"))
.Where(ids => ids != null)
.SelectMany(ids => ids.Split(separators,
StringSplitOptions.RemoveEmptyEntries))
.Select(id => int.Parse(id.Trim()))
.OrderBy(id => id)
.ToList();

请注意,我已将每个 ID 解析为整数,因为如果您将它们视为字符串,那么“123”会出现在“55”之前。如果它们实际上不一定是整数,但您想对任何可以以这种方式解析为整数的值进行排序,那么排序部分就会变得更加棘手。

关于c# - 如何使用 LINQ 在 XML 中按名称获取多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211482/

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