I’ve a nice situation, I think at beginning this a usual query but I’m having some problem trying to solve this, the situation is:
I’ve a list of “Houses”, and each house have a list of “Windows”. And I want to filter for a catalog only the Houses witch have a Blue windows, so my extension method of House is something like:
public static List<House> FilterByWindow (this IEnumerable<House> houses, Window blueOne){
var list = houses.Select(p=>p.Windows.Where(q=>q.Color == blueOne.Color));
return list.ToList();
}
Is this correct or I’m losing something? Some better suggestion?
If you want to search for
Houseinstances containing blueWindows, then use the existingAnyextension:What you have right now is not correct. The
Selectextension does not filter – it is a projection, and you aren’t assigning the result to anything, so that line you have is effectively a no-op.Also, by wrapping this logic in a method, you can prevent the expression compiler from being able to translate it into a SQL statement. Instead, write it all in one shot, as I have above, or accept and return an
IQueryable<House>instead of accepting anIEnumerable<House>and returning aList<House>.