我有一个 xml 文档
<NumSet>
<num>1</num>
<num>2</num>
<num>2</num>
<num>3</num>
</NumSet>
我想要显示独特的元素,即 1 和 3。不明显也会带出 2。如何做到这一点?我必须使用群组吗?有什么简洁的方法可以做到这一点吗?
我有一个 xml 文档
<NumSet>
<num>1</num>
<num>2</num>
<num>2</num>
<num>3</num>
</NumSet>
我想要显示独特的元素,即 1 和 3。不明显也会带出 2。如何做到这一点?我必须使用群组吗?有什么简洁的方法可以做到这一点吗?
你是对的,你可以使用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);
听起来您想要一个Distinct
GroupBy
查询...在 StackOverflow上查看有关 Linq 的 Need help with group by 和 distinct post。
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);
要执行您需要的操作,我会说是的,您需要使用 GrouBy,然后计算每个组中的元素,并返回仅包含一个元素的元素。在代码中,这转化为:
var query = lst.GroupBy(x => x)
.Where(x => x.Count() == 1)
.Select(x => x.Key);