C# 如何对这些XDocuments进行分组? 问题
我有一组C# 如何对这些XDocuments进行分组? 问题,c#,linq-to-xml,grouping,C#,Linq To Xml,Grouping,我有一组XDocument实例。每个文档都有一个可接受不同值的重复元素。我想按此值对它们进行分组,但每个元素可以指定不同的值 <sampledoc> <value>a</value> <value>b</value> <value>c</value> </sampledoc> GroupBy在这里对您没有任何帮助,因为它只将序列中的每个元素分配给一个组 var docs = new XD
XDocument
实例。每个文档都有一个可接受不同值的重复元素。我想按此值对它们进行分组,但每个元素可以指定不同的值
<sampledoc>
<value>a</value>
<value>b</value>
<value>c</value>
</sampledoc>
GroupBy
在这里对您没有任何帮助,因为它只将序列中的每个元素分配给一个组
var docs = new XDocument[] { docA, docB, docC } ;
var result = docs
.SelectMany(doc => doc.Root.Elements("Value"))
.Select(el => el.Value)
.Distinct()
.Select(key => new {
Key = key,
Documents = docs.Where(doc =>
doc.Root.Elements("Value").Any(el => el.Value == key))
});
谢谢我很快就意识到了GroupBy的存在,但我很挣扎。我刚刚提出了与您的查询的第一部分完全相同的问题,但是第二部分被证明是难以捉摸的,因为我试图让整个iGroup工作起来。也许我可以创建一个ILookup,您可以在其中进行Select调用。
var docs = new XDocument[] { docA, docB, docC } ;
var result = docs
.SelectMany(doc => doc.Root.Elements("Value"))
.Select(el => el.Value)
.Distinct()
.Select(key => new {
Key = key,
Documents = docs.Where(doc =>
doc.Root.Elements("Value").Any(el => el.Value == key))
});