using System.Collections.Generic;
public static void Main()
var masterlist = new List<Customer>()
new Customer() { ID=1, Cash=25 },
new Customer() { ID=2, Card_ID="card2" },
new Customer() { ID=3, Card_ID="card33" }
var existinglist = new List<Customer>()
new Customer() { ID=1, Card_ID="card1", Cash=6 },
new Customer() { ID=2, Card_ID="card12222222222", Cash=27 },
new Customer() { ID=4, Cash=99 }
var mergedlist = from a in masterlist
foreach (Customer c in mergedlist)
public static T Merge<T>(T master, T other) where T : new()
var properties = typeof(T)
.Where(p => p.CanRead && p.CanWrite && !p.GetIndexParameters().Any());
foreach (var prop in properties)
object value = prop.GetValue(master) ?? prop.GetValue(other);
prop.SetValue(result, value);
public int ID { get; set; }
public string Card_ID { get; set; }
public decimal? Cash { get; set; }