如何在分组后第二次过滤

时间:2013-08-07 07:04:34

标签: c# linq linq-to-xml

我有一个像这样的xml文档

<root>
  <e id="1" subid="1">
    <key>a</key>
  </e>
  <e id="2" subid="1">
    <key>a</key>
  </e>
  <e id="3" subid="2">
    <key>c</key>
  </e>
  <e id="4" subid="2">
    <key>d</key>
  </e>
</root>

我想选择具有相同subid但具有不同键的元素组。

我想我需要先将它们分组

var ElementGroups = from E in Root.Elements("e")
                    group E by E.Attribute("subid") into Egroups
                    where ?.Element("key").distinct().count > 1
                    select Egroups

我有正确的方法吗?我不知道如何在分组后引用特定元素。

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找:

var ElementGroups = from E in Root.Elements("e")
                    group E by (string)E.Attribute("subid") into Egroups
                    where Egroups.Elements("key").Select(x => (string)x).Distinct().Count() > 1
                    select Egroups;