c# merge two lists code example

Example 1: combine two lists c#

List<string> a = new List<string>();
List<string> b = new List<string>();

a.AddRange(b);

Example 2: 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 3: 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
}

Example 4: c# merge two lists as queryable

var list3 = list1.Concat(list2);

// or

var list4 = list1.Union(list2);
// Union is a set operation - it returns distinct values.

// Concat simply returns the items from the first sequence followed by the items from the second sequence; the resulting sequence can include duplicate items.

// You can think of Union as Concat followed by Distinct.