Merge 2 list c# code example

Example 1: c# merge two lists

// Create your object
public class A { int Id { get; set; } A() { } A(int id) { Id = id;} }
public class B { int Id { get; set; } B() { } B(int id) { Id = id;} }

// Construct your lists
List<A> list = new List<A>() { new A( Id = 1 ), new A( Id = 2 ) };
List<B> list1 = new List<B>() { new B( Id = 3 ), new B( Id = 4 ) };

// Then create a linq query and convert the result to a list
List<object> all = (from x in list select (object)x).ToList();

// Now add the second list to the end of the last one
all.AddRange((from x in list1 select (object)x).ToList());

// You can use this new list to loop it like this
foreach (object item in all)
{
	// If you want to check which object we are looping you do this:
	bool obj1 = item is A;
	// Now you can cast the item to your object in a conditional operator
	Console.WriteLine(obj1 ? (item as A).Id : (item as B).Id);

	// Output:
	// 1
	// 2
  	// 3
  	// 4
}

Example 2: c# merge two lists different types

// Create your object
public class A { int Id { get; set; } A() { } A(int id) { Id = id;} }
public class B { int Id { get; set; } B() { } B(int id) { Id = id;} }

// Construct your lists
List<A> list = new List<A>() { new A( Id = 1 ), new A( Id = 2 ) };
List<B> list1 = new List<B>() { new B( Id = 3 ), new B( Id = 4 ) };

// Then create a linq query and convert the result to a list
List<object> all = (from x in list select (object)x).ToList();

// Now add the second list to the end of the last one
all.AddRange((from x in list1 select (object)x).ToList());

// You can use this new list to loop it like this
foreach (object item in all)
{
	// If you want to check which object we are looping you do this:
	bool obj1 = item is A;
	// Now you can cast the item to your object in a conditional operator
	Console.WriteLine(obj1 ? (item as A).Id : (item as B).Id);

	// Output:
	// 1
	// 2
  	// 3
  	// 4
}