-1

我有一个 xml 文档

<NumSet>
    <num>1</num>
    <num>2</num>
    <num>2</num>
    <num>3</num>
  </NumSet>

我想要显示独特的元素,即 1 和 3。不明显也会带出 2。如何做到这一点?我必须使用群组吗?有什么简洁的方法可以做到这一点吗?

4

4 回答 4

1

你是对的,你可以使用GroupBy和过滤只有一个项目的组Count() == 1

 var output =  XDocument.Load(xmlFile)
                        .Descendants("num")
                        .Select(e => e.Value)
                        .GroupBy(x => x)
                        .Where(g => g.Count() == 1)
                        .Select(g => g.Key);
于 2013-08-16T08:30:48.510 回答
1

听起来您想要一个Distinct GroupBy查询...在 StackOverflow上查看有关 Linq 的 Need help with group by 和 distinct post。

于 2013-08-16T08:27:34.833 回答
1
XElement xe = XElement.Parse(@"<NumSet><num>1</num><num>2</num><num>2</num><num>3</num></NumSet>");
var query = xe.Elements("num")
               .GroupBy(x => x.Value)
               .Where(x=>x.Count ()==1)
               .Select (x => x);
于 2013-08-16T08:27:53.270 回答
1

要执行您需要的操作,我会说是的,您需要使用 GrouBy,然后计算每个组中的元素,并返回仅包含一个元素的元素。在代码中,这转化为:

var query = lst.GroupBy(x => x)
  .Where(x => x.Count() == 1)
  .Select(x => x.Key);
于 2013-08-16T08:33:11.910 回答