首页 新闻 会员 周边

Linq的Except方法会减少元素数量?自动去重?

0
[已解决问题] 解决于 2016-08-24 08:39

int[] a = { 1, 2, 3, 4,3,4,5 };
int[] b = { 2};
int[] reslut = a.Except(b).ToArray();

 

为什么结果的result={ 1,  3, 4,5 };

我只想去掉2啊

吴顶天的主页 吴顶天 | 初学一级 | 园豆:39
提问于:2016-08-19 15:58
< >
分享
最佳答案
0

a.Where(v=>b.Contains(v)!=-1)  这样一句话就搞定了

奖励园豆:5
小精灵儿Pawn | 菜鸟二级 |园豆:470 | 2016-08-21 17:37
其他回答(2)
0

内部实现通过一个Set(可参考HashSet)做了去重,可以参考.net源码

JeffWong | 园豆:2328 (老鸟四级) | 2016-08-19 16:23
0
你是想去掉a中 在b中存在的元素

代码这样子写
            int[] a = { 1, 2, 3, 4, 3, 4, 5 };
            int[] b = { 2 };
            List<int> f = a.ToList();
            int k = f.RemoveAll((A) =>
                {
                    if (b.Contains(A))
                    {
                        return true;
                    }
                    return false;
                });

 f就是去掉重复以后的集合

需要格局 | 园豆:2145 (老鸟四级) | 2016-08-19 17:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册