Can I use Linq's Except() with a lambda expression comparer?

后端 未结 7 1553
暗喜
暗喜 2020-12-01 20:55

I know I can call linq\'s Except and specify a custom IEqualityComparer, but implementing a new Comparer class for each data type seems like an overkill for this purpose. Ca

7条回答
  •  南笙
    南笙 (楼主)
    2020-12-01 21:05

    Can you not use a .Where with a lambda that filters out your required values?

    Example as requested:

        static void Main(string[] args)
        {
            var firstCustomers = new[] { new Customer { Id = 1, Name = "Bob" }, new Customer { Id = 2, Name = "Steve" } };
            var secondCustomers = new[] { new Customer { Id = 2, Name = "Steve" }, new Customer { Id = 3, Name = "John" } };
    
            var customers = secondCustomers.Where(c => !firstCustomers.Select(fc => fc.Id).Contains(c.Id));
        }
    
        public class Customer
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }
    

提交回复
热议问题