【发布时间】:2021-01-22 13:34:25
【问题描述】:
我有一个数字数组,我需要防止重复。对于数组中大于0 的每个数字,我需要删除除一个之外的所有重复项。例如,如果输入为 [0,0,0,1,1,1,1,1,2,2],则输出应为:[0,0,0,1,2]。有人能帮我吗?我已经尝试了下面的代码,但我得到了这样的结果 [0,1,2]。
Results.GroupBy(item => item.id).Select(x => x.First());
输入和预期输出的另一个例子:
Input: {[id=0,Name="test0"],[id=0,Name="test0"], [id=1,Name="test1"],[id=1,Name="test1"],[id=1,Name="test1"],[id=2,Name="test2"],[id=2,Name="test2"]}
Output: {[id=0,Name="test0"],[id=0,Name="test0"],[id=1,Name="test1"],[id=2,Name="test2"]}
【问题讨论】:
-
@John 我认为他们的意思是他们想要删除重复项 > 0
-
是的,我预计需要避免 3 个零
-
您可以对值进行分组,然后根据该值取一个或全部。
list.GroupBy(x => x).SelectMany(grp => grp.Key > 0 ? grp.Take(1) : grp)请注意,即使它们不像您的示例那样全部排成一行,也会删除重复项。 -
如果零分布在整个列表中,您希望输出是什么,例如:
0, 0, 0, 1, 1, 0, 1, 2, 0, 2, 2, 2, 0。