2つの集合の差を求めます

6835 ワード

        /// <summary>

        ///  2 

        /// </summary>

        public class wage

        {

            public static void Test()

            {

                List<wage> list1 = new List<wage>

                                       {

                                           new wage { Id = 1, Name = "list1" },

                                           new wage { Id = 2, Name = "list1" },

                                           new wage { Id = 3, Name = "list1" },

                                           new wage { Id = 5, Name = "list1" },

                                           new wage { Id = 6, Name = "list1" }

                                       };

                List<wage> list2 = new List<wage>

                                       {

                                           new wage { Id = 1, Name = "list2", },

                                           new wage { Id = 2, Name = "list2", },

                                           new wage { Id = 3, Name = "list2", },

                                           new wage { Id = 4, Name = "list2", },

                                           new wage { Id = 5, Name = "list2", }

                                       };



                ////var union = list1.Union(list2, new MyComparer()).ToList();

                ////var intersect = list1.Intersect(list2, new MyComparer()).ToList();

                ////var except = union.Except(intersect, new MyComparer()).ToList();



                var result = list1.Union(list2, new MyComparer()).Except(list1.Intersect(list2, new MyComparer()), new MyComparer());

                foreach (var item in result)

                {

                    Console.WriteLine("id = {0},  name = {1}", item.Id, item.Name);

                }

            }



            public int Id { set; get; }



            public string Name { set; get; }



            public class MyComparer : IEqualityComparer<wage>

            {

                public bool Equals(wage x, wage y)

                {

                    return x.Id == y.Id;

                }



                public int GetHashCode(wage obj)

                {

                    return obj.Id;

                }

            }

        }