You can definitely use the collection initializer showed by [@Paparazzi](https://codereview.stackexchange.com/a/151477/59161) var processDetails = new List<OnGoingProcess>() { new OnGoingProcess(120, "Process 29", "T20"), new OnGoingProcess(85, "Process 229") }; --- Like others I have difficulties to understand the requirements but I think what you are looking for is a [`Union`](https://msdn.microsoft.com/en-us/library/bb358407(v=vs.110).aspx) > Produces the set union of two sequences by using a specified IEqualityComparer<T>. With it you can replace the entire `foreach` as var mergedProcesses = processDetails.Union(routePlans, new ProcessEqualityComparer()); where class ProcessEqualityComparer : IEqualityComparer<OnGoingProcess> { public bool Equals(OnGoingProcess left, OnGoingProcess right) { return left.Id == right.Id; } public int GetHashCode(OnGoingProcess process) { return process.Id.GetHashCode(); } } The result is: <!-- language: lang-none --> 120 Process 29 T20 100 Process 2 A20 99 Process 3 S20 85 Process 229 B20 220 Process 39 C20 15 Process 20 D20 101 Process 129 G20 222 Process new null