我有一个xml文档
<NumSet>
<num>1</num>
<num>2</num>
<num>2</num>
<num>3</num>
</NumSet>
我希望显示出独特的元素,即1和3.而不是不同,这也会带来2。 怎么做?我必须使用群组吗?有没有简洁的方法呢?
答案 0 :(得分:1)
听起来您需要Distinct
GroupBy
查询...请查看StackOverflow上的Need help on Linq with group by and distinct帖子。
答案 1 :(得分: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);
答案 2 :(得分: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);
答案 3 :(得分:1)
要做你需要的我会说是的,你需要使用GrouBy,然后计算每个组中的元素,并返回只包含一个元素的元素。在代码中,这转换为:
var query = lst.GroupBy(x => x)
.Where(x => x.Count() == 1)
.Select(x => x.Key);