在 C# 中使用 [] 访问 Linq to XML 查询结果

发布于 2024-10-17 23:19:26 字数 700 浏览 1 评论 0原文

在这篇文章中,使用迭代器访问 Linq to XML 查询结果如下。

foreach (var elem in elems) {
    var res = elem.Elements("ClassKeyName");

    foreach (var e in res) {
        Console.WriteLine(e.Value);
    }
}

我可以用[]访问结果吗?例如,我想使用如下,

foreach (var elem in elems) {
    var res = elem.Elements("ClassKeyName");
    Console.WriteLine(res[0].Value);
}

但是,我收到此错误消息

xmlparse.cs(18,34): error CS0021: 
Cannot apply indexing with [] to an expression of type
`System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>'

In this post, the Linq to XML query result are accessed with iterator as follows.

foreach (var elem in elems) {
    var res = elem.Elements("ClassKeyName");

    foreach (var e in res) {
        Console.WriteLine(e.Value);
    }
}

Can I access the result with []? For example, I want to use as follows,

foreach (var elem in elems) {
    var res = elem.Elements("ClassKeyName");
    Console.WriteLine(res[0].Value);
}

However, I got this error message

xmlparse.cs(18,34): error CS0021: 
Cannot apply indexing with [] to an expression of type
`System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尐籹人 2024-10-24 23:19:26

您只需将结果转换为可索引类型,例如列表:(

foreach (var elem in elems) {
    List<XElement> res = elem.Elements("ClassKeyName").ToList();
    Console.WriteLine(res[0].Value);
}

如果您愿意,您仍然可以使用 var - 我刚刚给了它一个显式类型,以使其在本案。)

You'd just have to convert the results to an indexable type, such as a list:

foreach (var elem in elems) {
    List<XElement> res = elem.Elements("ClassKeyName").ToList();
    Console.WriteLine(res[0].Value);
}

(You can still use var if you want - I've just given it an explicit type to make it clearer in this case.)

迷路的信 2024-10-24 23:19:26

如果您只需要第一个,则可以res.First().Value。如果您需要第 n 个元素 res.Skip(n - 1).Value (因此第一个元素是 res.Skip(0).Value,第二个 <代码>res.Skip(1).Value...)。

最大的问题是为什么?你想让我做什么?

If you only need the first, you can res.First().Value. If you need the n-th element res.Skip(n - 1).Value (so the first element is res.Skip(0).Value, the second res.Skip(1).Value...).

The big question is WHY? What do you want to do?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文