Tôi đã đăng câu hỏi này một lúc trước nhưng có một câu trả lời một phần cho vấn đề của tôi, vì vậy tôi nghĩ tôi đăng thêm lời giải thích hy vọng sẽ nhận được câu trả lời chính xác hơn. Tôi có 2 lớp:Lambda với các lớp lồng nhau
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
}
}
Tôi đang cố gắng để có được chỉ Tất cả nhân viên có xe tải được phân bổ để bỏ qua những người có SmallCars sử dụng Lambda, tôi đã cố gắng dòng này:
List<Employee> EmployeesWithVans = AllEmployees.Where(emps => emps.Car.Any(cartype => cartype.CarType == Car.CarTypes.Van)).ToList();
Nhưng điều này được tất cả nhân viên nếu ít nhất một van được cấp cho một nhân viên (.Any
) nếu tôi thử (.All
), nó sẽ mang lại không có gì là không phải tất cả nhân viên đều có Vân.
Bất kỳ ý tưởng nào nếu điều này có thể đạt được bằng cách sử dụng Lambda lồng nhau?
Cảm ơn.
Edit:
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 });
Có vẻ như cô ấy muốn Nhân viên không có xe hơi nhỏ ... –
bạn chưa đề cập đến 'carID' vv .. tuy nhiên tôi đã chỉnh sửa câu trả lời theo Bản cập nhật của bạn .. –