如何使用这个LINQ与多个“Where”?

时间:2014-05-12 14:40:59

标签: c# .net linq

说我有这种结构:

public class Car
{
   public string Name;
   public IList<Tire> Tires;
}

public class Tire
{
   public string Name;
   public int Size;
}

我想要一个查询来返回所有拥有40码轮胎的汽车。

我这样想,我错过了什么?

Cars.Where(x => x.Tires.Where(y => y.Size == 40));

此代码抛出此错误:“无法将lambda表达式转换为委托类型'System.Func',因为块中的某些返回类型不能隐式转换为委托返回类型”

2 个答案:

答案 0 :(得分:8)

你想要

Cars.Where(x => x.Tires.Any(y => y.Size == 40));

Cars.Where(x => x.Tires.All(y => y.Size == 40));

取决于要求。

您的版本无法正常工作,因为外部lambda实际上返回IEnumerable<Tire>,而它必须是bool

答案 1 :(得分:2)

您应该使用Any代替。

Cars.Where(x => x.Tires.Any(y => y.Size == 40));