如何使用LINQ删除数组中的重复元素?如果重复,则删除一个元素?

时间:2014-07-06 03:59:01

标签: c# .net linq

int [] n=new int[10]{2,3,33,33,55,55,123,33,88,234};
output=2,3,123,88,234;

使用LINQ 我可以通过连续检查使用两个for循环来完成它。但我需要一个更简单的方法使用LINQ

它没有删除重复项.. 通过distinct删除重复项将给出= 2,3,123,33,55,88,234 我的输出应该是= 2,3,123,,88,234;

2 个答案:

答案 0 :(得分:6)

我将您的分组提示与 matiash的计数结合起来。不确定它的速度。

var result = n.GroupBy(s => s).Where(g => g.Count() == 1).Select(g => g.Key);

更新:我测量了速度,似乎时间是线性的,所以你可以在大型集合上使用它

答案 1 :(得分:4)

var result = n.Where(d => n.Count(d1 => d1 == d) <= 1);

这样做:只取n个中最多出现1次的那些元素。

它虽然是二次方的。对于简短的收藏来说并不重要,但可能会有所改进。

编辑 Dmitry's solution是线性的,因此更好。