Мне лично нравится создавать библиотеки с расширениями для классов
public static List<TTo> Cast<TFrom, TTo>(List<TFrom> fromlist) where TFrom : class where TTo : class { return fromlist.ConvertAll(x => x as TTo); }