如何使用lambda表达式过滤对象列表?

时间:2010-03-24 15:44:08

标签: linq lambda

我知道我不应该拥有相同价值的id。这只是虚构的,所以忽略了这一点。

我有:

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" });

我想使用Lambda Expression来检索id为1的所有汽车。

预期结果:

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

问题是更多地基于外键过滤对象列表。

2 个答案:

答案 0 :(得分:16)

使用LINQ:

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

使用List<T>.FindAll

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

我更喜欢LINQ方法 - 注意这是懒惰的,而FindAll会立即查看整个列表并构建一个包含结果的新列表。

答案 1 :(得分:5)

试试这个

var match = carList.Where(x => x.id ==1 );