Несколько решений ...
Вместо преобразования данных после их сбора, вы можете рассмотреть вопрос о создании прогноза при его сборе.
return items.Select(x=>x as SomeInterface).ToList();
Если вы делаете это часто, расширениеметод все еще может быть полезным.Это не обязательно должен быть Tolist / Cast / ToList, как вы упомянули.Приведение примет уже IEnumerable, но вы можете создать перегрузку, которая принимает IQueryable, что-то вроде этого (не проверено).
public IEnumerable<TResult> Cast<T, TResult>(this IQueryable<T> input)
{
return input.AsEnumerable().Cast<TResult>();
}
Это свело бы ваш код к следующему:
return items.Cast<SomeClass, SomeInterface>.ToList();