intersect two lists with different objects

后端 未结 4 1601
感动是毒
感动是毒 2020-12-09 16:45

I have a list of ObjA and ObjB as follows:

List List1;
List List2;

Both ObjA and ObjB has a common field which is U

4条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-09 17:03

    1.look at this simple code

      var result = (from objA in objAList
                    join objB in objBList on objA.user.Id equals objB.user.Id
                    select objA/*or objB*/).ToList();
    

    2.complete code

     class QueryJoin
    {
        static void Main(string[] args)
        {
            //create users
            User user1 = new User { Id = 1, Name = "anuo1" };
            User user2 = new User { Id = 2, Name = "anuo2" };
            User user3 = new User { Id = 3, Name = "anuo3" };
            User user4 = new User { Id = 4, Name = "anuo4" };
            User user5 = new User { Id = 5, Name = "anuo5" };
            //create objAList
            List objAList = new List();
            objAList.Add(new ObjA { user = user1 });
            objAList.Add(new ObjA { user = user2 });
            objAList.Add(new ObjA { user = user3 });
            //create objBList
            List objBList = new List();
            objBList.Add(new ObjB { user = user3 });
            objBList.Add(new ObjB { user = user4 });
            objBList.Add(new ObjB { user = user5 });
    
            //intersect
            var result = (from objA in objAList
                          join objB in objBList on objA.user.Id equals objB.user.Id
                          select objA/*or objB*/).ToList();
    
        }
    
    }
    
    class ObjA
    {
        public User user { get; set; }
    }
    
    class ObjB
    {
        public User user { get; set; }
    }
    
    class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    

提交回复
热议问题