在C#中,将接口列表强制转换为对象列表的推荐方法是什么?

时间:2015-11-25 15:22:33

标签: c# collections casting

我有返回的代码和IVehicle接口的数组

IEnumerable<IVehicle>

我知道所有这些对象都是Car对象。什么是正确的投射方式

IEnumerable<Car>

<Enumerable<Car>

因为我需要将这些传递给另一个需要 FROM `orders` WHERE `auth_status` = 'ACTIVE') AS `cp_tbl` WHERE NOT EXISTS (SELECT 1 FROM `wip_summary` WHERE `wk_num` = WEEK(CURDATE()) AND `year` = YEAR(CURDATE()));

的函数

2 个答案:

答案 0 :(得分:6)

你可以像这样投射:

var allCars = allVehicles.Cast<Car>();

答案 1 :(得分:5)

我不确定这是否真的需要,但可以使用Linq扩展方法完成,如下所示。

IEnumerable<Car> Cars = allVehicles.Cast<Car>();

但是,如果allVehicles中的某个成员 a Car,则会引发异常;如果需要,可以如下规避这一点。

IEnumerable<Car> Cars = allVehicles.OfType<Car>().Cast<Car>();