Linq 如何使用lambda表达式筛选对象列表?

Linq 如何使用lambda表达式筛选对象列表?,linq,lambda,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" }); List carLi

我知道我不应该有相同值的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" });
List carList=new List();
Add(新车(){id=1,name=“Honda”});
添加(新车(){id=2,name=“Toyota”});
添加(新车(){id=1,name=“Nissan”});
我想使用Lambda表达式来检索id为1的所有汽车

预期结果:

-- Id: 1, Name: Honda -- Id: 1, Name: Nissan --Id:1,姓名:本田 --Id:1,姓名:日产 问题更多的是基于外键筛选对象列表。

试试这个

var match = carList.Where(x => x.id ==1 );
使用LINQ:

IEnumerable<Car> matchingCars = carList.Where(car => car.id == 1);
IEnumerable matchingCars=carList.Where(car=>car.id==1);
使用
List.FindAll

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

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

我不同意LINQ方法,您首先需要知道代码的上下文,然后才能决定是否进行延迟初始化。…@Tim:如果我想进行急切的评估,为了一致性,我通常会在调用
ToList
后使用LINQ。在某些情况下,FindAll可能会稍微简单一些,尽管这确实限制了您将
列表
作为源代码,而不是只需要
IEnumerale