Как я могу отфильтровать список объектов, используя лямбда-выражения? - PullRequest
5 голосов
/ 24 марта 2010

Я знаю, что у меня не должно быть идентификаторов с таким же значением. Это просто выдумка, так что не обращайте на это внимания.

У меня есть:

List<Car> carList = new List<Car>();
carList.Add(new Car() { id = 1, name = "Honda" });
carList.Add(new Car() { id = 2, name = "Toyota" });
carList.Add(new Car() { id = 1, name = "Nissan" });

Я хочу использовать лямбда-выражение для извлечения всех автомобилей с идентификатором 1.

Ожидаемый результат:

-- Id: 1, Name: Honda
-- Id: 1, Name: Nissan

Проблема заключается в дополнительной фильтрации списка объектов на основе внешнего ключа.

Ответы [ 2 ]

16 голосов
/ 24 марта 2010

Использовать LINQ:

IEnumerable<Car> matchingCars = carList.Where(car => car.id == 1);

Использование List<T>.FindAll:

List<Car> matchingCars = carList.FindAll(car => car.id == 1);

Я бы лично предпочел подход LINQ - обратите внимание, что он ленив, тогда как FindAll сразу просматривает весь список и создает новый список с результатами.

5 голосов
/ 24 марта 2010

Попробуйте это

var match = carList.Where(x => x.id ==1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...