少し前にこの質問を投稿しましたが、私の問題に対する部分的な回答を得たので、より正確な回答を得ることを期待して、より多くの説明を投稿すると思いました. 私は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
}
}
私は、Lambda を使用して SmallCars を使用している従業員を無視して、バンが割り当てられているすべての従業員のみを取得しようとしています。次の行を試しました。
List<Employee> EmployeesWithVans = AllEmployees.Where(emps => emps.Car.Any(cartype => cartype.CarType == Car.CarTypes.Van)).ToList();
しかし、少なくとも 1 つのバンが従業員に割り当てられている場合、これはすべての従業員を取得します( ) すべての従業員がバンを持っているわけではないため、.Any
試しても ( ) 何も返されません。.All
ネストされた Lambda を使用してこれを達成できるかどうか、考えはありますか?
ありがとう。
編集:
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 });