public static void Test() { var m1 = new ModelTest2 { BeginDate = new DateTime(2017, 7, 1), CompanyId = 123, Value = 1 }; var m2 = new ModelTest2 { BeginDate = new DateTime(2017, 7, 2), CompanyId = 123, Value = 2 }; var m3 = new ModelTest2 { BeginDate = new DateTime(2017, 7, 3), CompanyId = 123, Value = 3 }; var n1 = new ModelTest2 { BeginDate = new DateTime(2017, 7, 1), CompanyId = 123, Value = 100 }; var n2 = new ModelTest2 { BeginDate = new DateTime(2017, 7, 2), CompanyId = 123, Value = 200 }; var t1 = new List <ModelTest2> { m1, m2, m3 }; var t2 = new List <ModelTest2> { n1, n2 }; var result = t1.LeftOuterJoin(t2, p => new { p.BeginDate, p.CompanyId }, d => new { d.BeginDate, d.CompanyId }, (p, d) => new { p.BeginDate, p.CompanyId, Value = d?.Value ?? 0 } ).ToList(); // override Equals in class result = t1.LeftOuterJoin(t2, p => p, d => d, (p, d) => new { p.BeginDate, p.CompanyId, Value = d?.Value ?? 0 } ).ToList(); }
public bool Equals(ModelTest2 other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(BeginDate == other.BeginDate && CompanyId == other.CompanyId); }