c# - 我如何知道 XML 标签的索引

标签 c# linq

如何获取当前 XML 标记的索引?

例子:

<User>
  <Contact>
    <Name>Lucas</Name>
  </Contact>
  <Contact>
    <Name>Andre</Name>
  </Contact>
    ...
</User>

我正在尝试下面的代码

    foreach (var element2 in doc2.Root.Descendants())
    {
        String name = element.Name.LocalName;
        String value = element.Value;
    }

我想知道我是否正在阅读第一个<Contact>标签,或者第二个,或者第三个……

最佳答案

使用适当的重载 Select将在您枚举集合时生成索引。

var userContacts = doc2.Root
                       .Descendants()
                       .Where(element => element.Name == "Contact")
                       .Select((c, i) => new {Contact = c, Index = i});

foreach(var indexedContact in userContacts)
{
     // indexedContact.Contact
     // indexedContact.Index                 
}

注意:我添加了 .Where 是因为 .Descendants 会递归。

关于c# - 我如何知道 XML 标签的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954959/

相关文章:

c# - 获取以下实体之间的差异 Linq to Entities

asp.net - LINQ - WHERE 子句中的 CASE 语句

C# 类库方法摘要未在智能感知中显示

c# - 从 Outlook 获取附件

c# - aws Lambda 函数中的 Webresponse c#

c# - LINQ to SQL "aggregating"属性

c# - Windows mobile消息框this.close()?

c# - 如何从菜单中隐藏 MvcSiteMapNode 而不是面包屑?

linq - LINQ 中的条件多字段搜索和过滤

c# - Linq的SingleOrDefault函数中的优化