Лямбда с вложенными классами

Я опубликовал этот вопрос некоторое время назад, но получил частичный ответ на свою проблему, поэтому я решил опубликовать дополнительные объяснения, надеясь получить более точный ответ. У меня 2 класса:

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
    }
}

Я пытаюсь получить только всех сотрудников, у которых есть фургоны, выделенные для игнорирования тех, у кого есть SmallCars с использованием Lambda, я пробовал эту строку:

List<Employee> EmployeesWithVans = AllEmployees.Where(emps => emps.Car.Any(cartype => cartype.CarType == Car.CarTypes.Van)).ToList();

Но это получает всех сотрудников, если хотя бы один фургон выделен для Сотрудник (. Любой ), если я попробую ( .All ), он ничего не вернет, поскольку не у всех сотрудников есть Ван.

Любая идея, можно ли этого достичь с помощью вложенной лямбды ?

Спасибо.

Редактировать:

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 });
6
задан Maya 26 February 2011 в 23:53
поделиться