将填充的List 转换为List

我有一个List有成员。 我想将列表(及其所有成员) List转换为类型List ,其中ChildClassinheritanceBaseClass 。 我知道我可以通过foreach获得相同的结果:

 List ChildClassList = new List(); foreach( var item in BaseClassList ) { ChildClassList.Add( item as ChildClass ); } 

但是有更简洁的方法吗? 注意 – 这是在WP7平台上完成的。

如果你确定所有物品都是可浇铸的,你可以这样做:

 ChildClassList = BaseClassList.Cast().ToList(); 

如果无法将BaseClass项强制转换为ChildClass,则当前代码将添加null 。 如果这真的是你的意图,这将是相同的:

 ChildClassList = BaseClassList.Select(x => x as ChildClass).ToList(); 

但我宁愿建议这一点,其中包括类型检查,并将跳过不匹配的项目:

 ChildClassList = BaseClassList.OfType().ToList(); 

以下几乎等同于您当前的代码(唯一缺少的是它不会为失败的强制转换添加空值):

 var childList = baseList.OfType().ToList(); 

这将忽略列表包含除ChildClass之外的另一个派生类的实例。

您还可以使用:

 var childList = baseList.Cast().ToList(); 

但是这会对它无法投射的东西抛出InvalidCastException