具有多个匹配元素的列表中的linq foreach项

时间:2013-12-12 21:01:54

标签: c# linq

我有一份汽车清单。每辆车都有许多门。每扇门都有颜色。我想迭代列表,只选择那些有一个以上匹配颜色的门的汽车。

我尝试过这样的事情,但它并没有像我期望的那样工作:

foreach (Car car in cars.Where(c=>c.doors.Select(d=>d.color = "Blue").Count() > 1))
{
     // Do something     
}

你能帮我理解我做错了吗?

2 个答案:

答案 0 :(得分:3)

您需要将Select替换为Where并传递谓词:

foreach (Car car in cars.Where(c=>c.doors.Where(d=>d.color == "Blue").Count() > 1))

缩短时间:

foreach (Car car in cars.Where(c=>c.doors.Count(d=>d.color == "Blue") > 1))

答案 1 :(得分:0)

您使用c.color = "blue"作为作业。 您应该使用c.color == "blue"color.Equals("blue")进行比较。