说我有这种结构:
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',因为块中的某些返回类型不能隐式转换为委托返回类型”
答案 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));