Я опубликовал этот вопрос некоторое время назад, но получил частичный ответ на свою проблему, поэтому я решил опубликовать дополнительные объяснения, надеясь получить более точный ответ. У меня 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 });