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;
答案 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是线性的,因此更好。