Как использовать функцию list.where с объектами, которые преобразуются перед получением IEnumerable - PullRequest
0 голосов
/ 01 июля 2018

Мои классы такие

public interface ICar
{
    CarModel GetCarModel();
}

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

У меня есть список ICars, определенный следующим образом:

List<ICar> cars;

Я собираюсь извлечь IEnumerable из всех автомобилей типа Honda, используя условие Where и приведенный к Honda, а не к ICar. Как мне это сделать? Возможно ли это?

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Вы можете сделать это примерно так:

IEnumerable<ICar> results = cars.Where(s => s.GetCarModel == CarModel.Honda);
var hondas = results.Select(c => (Honda)c);
0 голосов
/ 01 июля 2018
var result = cars.OfType<Honda>();

См. документы

0 голосов
/ 01 июля 2018

Where возвращает только отфильтрованное IEnumerable. Вам также необходимо использовать Select:

var listOfHonda = cars.Where(c => c.GetCarModel() == CarModel.Honda).Select(c => (Honda)c);
...