using System.Collections.Generic;
public static void Main()
var legacyCustomers = new List<Customer>{
new Customer() { Name = "Customer 1" },
new Customer() { Name = "Customer 2" },
new Customer() { Name = "Customer 3" },
new Customer() { Name = "Customer 4" }
var currentCustomers = new List<Customer>{
new Customer() { Name = "Customer 1", Source = "migrated" },
new Customer() { Name = "Customer 2", Source = "migrated" },
new Customer() { Name = "Customer 3", Source = "" }
var migrateList = legacyCustomers.Where(
c => currentCustomers.All(c2 =>
!string.Equals(c2.Name, c.Name, StringComparison.CurrentCultureIgnoreCase) ||
(string.Equals(c2.Name, c.Name, StringComparison.CurrentCultureIgnoreCase) &&
!string.Equals(c2.Source, "migrated", StringComparison.CurrentCultureIgnoreCase))
foreach(var c in migrateList)
Console.WriteLine(c.Name);
public string Name { get; set; }
public string Source { get; set; }