C# 使用LINQ动态选择所有XML元素及其值
但是,我有以下代码动态选择所有不同的元素名称;我还想查看这些元素的值。如何使用LINQ实现这一点?我也愿意用其他方式来做C# 使用LINQ动态选择所有XML元素及其值,c#,xml,linq,C#,Xml,Linq,但是,我有以下代码动态选择所有不同的元素名称;我还想查看这些元素的值。如何使用LINQ实现这一点?我也愿意用其他方式来做 XDocument doc = XDocument.Load("XMLFile1.xml"); foreach (var name in doc.Descendants("QueryResults").Elements() .Select(x => x.Name).Distinct()) { } 您只需使用name.Value,
XDocument doc = XDocument.Load("XMLFile1.xml");
foreach (var name in doc.Descendants("QueryResults").Elements()
.Select(x => x.Name).Distinct())
{
}
您只需使用
name.Value
,它是XElement
的一个字符串属性,类似这样的东西可以工作
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
。如果要查看哪些名称具有哪些值,则需要在名称
上使用GroupBy
,并获取每个项目的值
var results =
doc
.Descendants("QueryResults")
.Elements()
.GroupBy(x => x.Name, (name, items) => new
{
Name = name,
Values = items.Select(x => x.Value)
});