He publicado esta pregunta hace un tiempo pero recibí una respuesta parcial a mi problema, así que pensé en publicar más explicaciones con la esperanza de obtener una respuesta más precisa. Tengo 2 clases:Lambda con clases anidadas
public class Employee
{
public string Name { get; set; }
public List<Cars> Cars { get; set; }
}
public class Car
{
public int CarID { get; set; }
public CarTypes CarType { get; set; }
public enum CarTypes
{
Van,
SmallCar
}
}
Estoy intentando conseguir solamente Todos los empleados que tienen furgonetas asignados a ignorar aquellos con SmallCars utilizando Lambda, probé esta línea:
List<Employee> EmployeesWithVans = AllEmployees.Where(emps => emps.Car.Any(cartype => cartype.CarType == Car.CarTypes.Van)).ToList();
Pero ahora se pone todos los empleados si se asigna al menos una camioneta a un empleado (.Any
) si intento (.All
) no traerá nada, ya que no todos los empleados tienen Van.
¿Alguna idea de si esto se puede lograr usando un Lambda anidado?
Gracias.
Editar:
Employee Mark = new Employee();
Mark.Cars.Add(new Car() { CarType = Car.CarTypes.Van, CarID = 12 });
Mark.Cars.Add(new Car() { CarType = Car.CarTypes.Van, CarID = 13 });
Mark.Cars.Add(new Car() { CarType = Car.CarTypes.SmallCar, CarID = 14 });
Employee Lisa = new Employee();
Lisa.Cars.Add(new Car() { CarType = Car.CarTypes.Van, CarID = 15 });
Lisa.Cars.Add(new Car() { CarType = Car.CarTypes.SmallCar, CarID = 16 });
Lisa.Cars.Add(new Car() { CarType = Car.CarTypes.SmallCar, CarID = 17 });
List<Employee> EmployeesWithVans should contain:
Employee FilteredMark contains:
Mark.Cars.Add(new Car() { CarType = Car.CarTypes.Van, CarID = 12 });
Mark.Cars.Add(new Car() { CarType = Car.CarTypes.Van, CarID = 13 });
Employee FilteredLisa contains:
Mark.Cars.Add(new Car() { CarType = Car.CarTypes.Van, CarID = 15 });
Parece que ella quiere Empleados que tampoco tienen un auto pequeño ... –
usted no ha mencionado 'carID' etc. Sin embargo, he editado mi respuesta según su actualización. –