我有一个列表< BaseClass>与其中的成员.我想将列表(及其所有成员具体)转换为List< ChildClass>类型,其中ChildClass继承BaseClass.我知道我可以通过foreach获得相同的结果:
List<ChildClass> ChildClassList = new List<ChildClass>(); foreach( var item in BaseClassList ) { ChildClassList.Add( item as ChildClass ); }
但是有没有更好的做法呢?注意 – 这是在WP7平台上完成的.
解决方法
如果您真的确定所有项目都是可浇注的,您可以执行此操作:
ChildClassList = BaseClassList.Cast<ChildClass>().ToList();
如果BaseClass项不能转换为ChildClass,您当前的代码将添加null.如果这是真的你的意图,这将是相当的:
ChildClassList = BaseClassList.Select(x => x as ChildClass).ToList();
但我宁愿建议这个,包括类型检查,并将跳过不符合的项目:
ChildClassList = BaseClassList.OfType<ChildClass>().ToList();