但是,我有以下代码可以动态选择所有不同的元素名称;我还想查看这些元素的值。如何使用 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
的字符串属性。