Используйте расширение Enumerablr,
myList2=new List<MyType>(myList2.Concat(myList1))
Кстати, если вы не заполняете myList2, вы можете просто создать его на основе myLis1.
EDIT
Я пытался исследовать производительность в нескольких случаях
1) AddRange через Add
List2.AddRange(List1);
public static class AddRangeUtils
{
public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> enumerable)
{
foreach (var cur in enumerable)
{
collection.Add(cur);
}
}
}
2) Concat
List2 = new List<TestClass>(List2.Concat(List1))
3) Предопределенный счет коллекции 1
var thirdList = new List<TestClass>(List2.Count + List1.Count);
foreach (var testClass in List1)
{
thirdList.Add(testClass);
}
foreach (var testClass in List2)
{
thirdList.Add(testClass);
}
List2 = thirdList;
4) Предопределенный счет коллекции 2
var thirdList = new List<TestClass>(List2.Count + List1.Count);
thirdList.AddRange(List1);
thirdList.AddRange(List2);
List2 = thirdList;
Счет коллекции - это количество элементовдля каждого списка List1 и List2: и пришли к таким результатам (с разной длиной коллекции)