using System.Collections.Generic;
public class DealResponse
public int detailId { get; set; }
public string detailcd { get; set; }
public string fileName { get; set; }
public int isNgo { get; set; }
public override string ToString()
return string.Format("id: {0} cd: {1} fileName: {2} isNgo: {3}", detailId, detailcd, fileName, isNgo);
public class DealResponseComprarer : IEqualityComparer<DealResponse>
public bool Equals(DealResponse x, DealResponse y)
return x.detailId == y.detailId && x.detailcd == y.detailcd ;
public int GetHashCode(DealResponse obj)
return (obj.detailId.GetHashCode() + obj.detailcd.GetHashCode());
public static void Main()
var L1 = new List<DealResponse>
new DealResponse { detailId = 5, detailcd = "ABC" , fileName = "string 1", isNgo = 0 },
new DealResponse { detailId = 5, detailcd = "DEF" , fileName = "string 2", isNgo = 0 },
new DealResponse { detailId = 5, detailcd = "XYZ" , fileName = "string ", isNgo = 0 }
var L2 = new List<DealResponse>
new DealResponse { detailId = 5, detailcd = "ABC" , fileName = "string 11", isNgo = 1 },
new DealResponse { detailId = 6, detailcd = "MNO" , fileName = "string 3", isNgo = 1 }
var combined = L2.Concat(L1.Except(L2, new DealResponseComprarer()));
foreach (var c in combined)