c# – 如何将基类型列表转换为派生类型的列表
发布时间:2020-12-16 00:22:32 所属栏目:百科 来源:网络整理
导读:从派生类到基类似乎有许多问题,但我的问题是如何将基类型列表转换为派生类型列表? public class MyBase { public int A;}public class MyDerived : MyBase { public int B;}public void MyMethod() { ListMyBase baseCollection = GetBaseCollection(); Lis
从派生类到基类似乎有许多问题,但我的问题是如何将基类型列表转换为派生类型列表?
public class MyBase { public int A; } public class MyDerived : MyBase { public int B; } public void MyMethod() { List<MyBase> baseCollection = GetBaseCollection(); List<MyDerived> derivedCollection = (List<MyDerived>)baseCollection; // Which doesn't work } 解决方案我最终得到的不是很优雅. public class MyBase { public int A; } public class MyDerived { public int B; public MyBase BASE; } public void MyMethod() { List<MyBase> baseCollection = GetBaseCollection(); List<MyDerived> derivedCollection = new List<MyDerived>(); baseCollection.ForEach(x=>{ derivedCollection.Add(new derivedCollection(){ BASE = x}); }); } 肯定有更好的办法… 解决方法
您可以使用Linq方法OfType< MyDerived>(),例如:
List<MyDerived> derivedCollection = baseCollection.OfType<MyDerived>().ToList(); 它会删除所有不是MyDerived类的项目 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |