首页 新闻 搜索 专区 学院

判断两个List集合

0
[已解决问题] 解决于 2013-02-19 08:34

有两个集合aList,bList,我要判断aList里的Id是否bList中也有,如果没有就删除,有就继续判读下一个ID

淘@淘的主页 淘@淘 | 小虾三级 | 园豆:602
提问于:2013-02-18 14:51
< >
分享
最佳答案
1

交集 aList.Intersect(bList)

奖励园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2013-02-18 15:30

不行呢,出来的是多的那个集合

淘@淘 | 园豆:602 (小虾三级) | 2013-02-18 15:36

@淘@淘: 

交集 和差集 应该行,后面就是操作这个 交集或者差集而已

Qlin | 园豆:2403 (老鸟四级) | 2013-02-18 15:37

@淘@淘:  楼主的意思不是取交集吗/? Intersect 就是取两个集合的交集

havid | 园豆:70 (初学一级) | 2013-02-18 16:37
其他回答(3)
0

先遍历第一个list,然后用linq在第二个list中查询

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-02-18 15:32
0
foreach (var item in aList)
{
    var target = bList.Find(m => m.ID == item.ID);
    if (target == null) continue;

    bList.Remove(target);
}
WilsonPan | 园豆:233 (菜鸟二级) | 2013-02-18 15:45

可是当aList.Count<bList.Count的时候那后边的那些数据就判断不了了

支持(0) 反对(0) 淘@淘 | 园豆:602 (小虾三级) | 2013-02-18 15:56
0
    class User
        {
            public string Id;
            public string Name;
        }

        private void RemoveInexistence(List<User> aList, List<User> bList)
        {
            if (aList != null && aList.Count > 0 && bList != null && bList.Count > 0)
            {
                List<User> clonedList = new List<User>();
                foreach (User u in aList)
                {
                    clonedList.Add(u);
                }

                foreach (User us in clonedList)
                {
                    User user = bList.Find(c => c.Id == us.Id);
                    if (user == null)
                    {
                        aList.Remove(aList.Find(c=>c.Id==us.Id));
                    }
                }
            }
        }

        private void Test()
        {
            List<User> aList = new List<User>();

            User u1 = new User();
            u1.Id = "1";
            u1.Name = "aaa";
            aList.Add(u1);
            User u2 = new User();
            u2.Id = "2";
            u2.Name = "bbb";
            aList.Add(u2);

            List<User> bList = new List<User>();
            bList.Add(u2);
            User u3 = new User();
            u3.Id = "3";
            u3.Name = "ccc";
            bList.Add(u3);

            this.RemoveInexistence(aList, bList);

            int iCount = aList.Count;

        }
quietwalk | 园豆:195 (初学一级) | 2013-02-18 15:59

您这个跟楼上的大侠的意思差不多,当aList.Count<bList.Count的时候那后边的那些数据就判断不了了

支持(0) 反对(0) 淘@淘 | 园豆:602 (小虾三级) | 2013-02-18 16:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册