如何在获取IEnumerable

时间:2018-07-01 10:37:35

标签: c# list linq casting where

我的课程是这样的

public interface ICar
{
    CarModel GetCarModel();
}

public class Honda: ICar
{
    CarModel GetCarModel()
    {
        return CarModel.Honda;
    }
}

我有一个ICars的列表,定义如下:

List<ICar> cars;

我希望使用Where子句提取所有Honda类型汽车的IEnumerable,并将其强制转换为Honda而不是ICar。 我该怎么做呢?这可能吗?

3 个答案:

答案 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);