Хотя то, что говорит @JaredPar, является правдой, есть некоторые обходные пути для коллекций, которые доступны сегодня. Например, вы можете использовать расширение Cast IEnumerable, если есть допустимое приведение типов от одного типа к другому.
List<Foo> list = barList.Cast<Foo>().ToList();
Или вы можете явно конвертировать из одного типа в другой, используя Select.
List<double> dList = intList.Select( i => Convert.ToDouble( i ) ).ToList();
Обратите внимание, что оба эти метода создадут новую коллекцию соответствующего типа, а не просто назначат коллекцию переменной другого типа, которая будет доступна при определенных условиях в следующих версиях C # / VB.