我的课程是这样的
public interface ICar
{
CarModel GetCarModel();
}
public class Honda: ICar
{
CarModel GetCarModel()
{
return CarModel.Honda;
}
}
我有一个ICars
的列表,定义如下:
List<ICar> cars;
我希望使用Where子句提取所有Honda类型汽车的IEnumerable,并将其强制转换为Honda而不是ICar。 我该怎么做呢?这可能吗?
答案 0 :(得分:6)
var result = cars.OfType<Honda>();
请参见docs
答案 1 :(得分:2)
Where
仅返回经过过滤的IEnumerable
。您还需要使用Select
:
var listOfHonda = cars.Where(c => c.GetCarModel() == CarModel.Honda).Select(c => (Honda)c);
答案 2 :(得分:1)
您可以通过以下方式做到这一点:
IEnumerable<ICar> results = cars.Where(s => s.GetCarModel == CarModel.Honda);
var hondas = results.Select(c => (Honda)c);