加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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类的项目

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读