将填充的List 转换为List
我有一个List
有成员。 我想将列表(及其所有成员) List
转换为类型List
,其中ChildClass
inheritanceBaseClass
。 我知道我可以通过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
。