使用 LINQ 动态选择所有 XML 元素及其值



但是,我有以下代码可以动态选择所有不同的元素名称;我还想查看这些元素的值。如何使用 LINQ 执行此操作?我也愿意以其他方式做这件事。

 XDocument doc = XDocument.Load("XMLFile1.xml");
 foreach (var name in doc.Descendants("QueryResults").Elements()
                .Select(x => x.Name).Distinct())
 {
 }

这样的东西会起作用

   XDocument doc = XDocument.Load("XMLFile1.xml");
   foreach (var name in doc.Descendants("QueryResults").Elements()
                .Select(x => new {Name = x.Name, Value = e.Value}).Distinct())
   {

   }

接受的查询与原始查询不同,因为它改变了Distinct的工作方式,因为它不再只比较Name,而且比较Value。如果要查看哪些名称具有哪些值,则需要在Name上使用GroupBy并获取每个项目的Value

var results =
    doc
        .Descendants("QueryResults")
        .Elements()
        .GroupBy(x => x.Name, (name, items) => new
        {
            Name = name,
            Values = items.Select(x => x.Value)
        });

你只需要使用name.Value,它是XElement的字符串属性。

最新更新