One or more generic lists can be combined or merged using zip() method in C#.
Below is an example of combining 4 lists by creating an extension method.
public static IEnumerable<TResult> ZipFour<T1, T2, T3, T4, TResult>( this IEnumerable<T1> source, IEnumerable<T2> second, IEnumerable<T3> third, IEnumerable<T4> fourth, Func<T1, T2, T3, T4, TResult> func) { using (var e1 = source.GetEnumerator()) using (var e2 = second.GetEnumerator()) using (var e3 = third.GetEnumerator()) using (var e4 = fourth.GetEnumerator()) { while (e1.MoveNext() && e2.MoveNext() && e3.MoveNext() && e4.MoveNext()) yield return func(e1.Current, e2.Current, e3.Current, e4.Current); } }
Usage –
list1.ZipFour(list2, list3, list4, (a, b, c, d) => new { A = a, B = b, C = c, D = d });