Question

Say I have this structure:

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

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

I want a query to return all Cars that have Tires with size 40.

I am thinking this way, what am I missing?

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

This code throws this error: "Cannot convert lambda expression to delegate type 'System.Func' because some of the return types in the block are not implicitly convertible to the delegate return type"

Was it helpful?

Solution

You want

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

or

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

Depending on the requirement.

Your version won't work because the outer lambda is actually returning an IEnumerable<Tire>, whereas it needs to be a bool.

OTHER TIPS

You should use Any instead.

Cars.Where(x => x.Tires.Any(y => y.Size == 40));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top