【问题标题】:How to use this LINQ with multiple "Where"?如何将此 LINQ 与多个“Where”一起使用?
【发布时间】:2014-05-12 14:40:59
【问题描述】:

假设我有这个结构:

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',因为块中的某些返回类型不能隐式转换为委托返回类型”

【问题讨论】:

  • 一辆汽车有多个不同尺寸的轮胎实际上是可以接受的吗?如果没有,您可能需要考虑更改模型以不允许这样做

标签: c# .net linq


【解决方案1】:

你想要的

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

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

视需求而定。

您的版本不起作用,因为外部 lambda 实际上返回 IEnumerable&lt;Tire&gt;,而它必须是 bool

【讨论】:

    【解决方案2】:

    您应该改用Any

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多