Самый простой способ - это, вероятно, использовать ConvertAll
:
List<IMyClass> converted = original.ConvertAll<IMyClass>(x => x);
Даже если вы используете .NET 2, вы можете использовать лямбда-синтаксис, если вы используете VS2008или выше.В противном случае всегда есть анонимные методы:
List<IMyClass> converted = original.ConvertAll<IMyClass>(
delegate (MyClass x) { return x; });
. В .NET 3.5 вы можете использовать LINQ с Cast
, OfType
или даже просто Select
:
var converted = original.Cast<IMyClass>().ToList();
var converted = original.OfType<IMyClass>().ToList();
var converted = original.Select(x => (IMyClass) x).ToList();
In.NET 4.0 вы можете использовать ToList
напрямую без промежуточного приведения, из-за ковариации IEnumerable<T>
:
var converted = original.ToList<IMyClass>();