특정 날짜 사이에 예약 할 수있는 Vehicle 개체의 목록을 반환 할 수 있기를 원합니다.다른 시간에 반환 된 동일한 개체를 비교하지 않는 Entity Framework
나는 현재 그 날짜 사이에 데이터베이스에있는 예약 목록을 반환하는 메서드를 가지고 있으며 각 예약에는 관련 차량 객체가 있으므로 사용할 수없는 모든 차량을 알고 있습니다.
데이터베이스의 모든 Vehicle 목록을 반환하는 다른 방법이 있지만 Booking.Vehicle과 목록에서 반환 된 Vehicle 객체를 비교하는 방법이 필요합니다.
내가이foreach(var booking in bookings)
{
allVehicles.Remove(booking.Vehicle)
}
을 시도하지만 차량이 제거되지 것입니다, 왜 개체가 제대로 비교되지 않습니다? 동일한 차량 객체가 제거 되더라도.
//Testing to see if the objects compare as expected (they don't)
public static List<Vehicle> AvaliableVehiclesBetween(DateTime StartDate, DateTime EndDate)
{
List<Booking> bookings = Booking.BookingsBetween(StartDate, EndDate);
List<Vehicle> vehicles = AllVehicles();
Vehicle v = vehicles[0];
if(bookings[0].Vehicle.Equals(v)) {
vehicles = null;
}
return vehicles;
}
차량을 운행하면 차량이 널과 같지 않습니다. 이 메모리에 의해 비교, 그래서
나는 코드가 잘못된 결과를 얻을 것이다 차량 ID 년대에 예약 ID 년대를 비교 생각합니다. – danludwig
@ danludwig - 좋은 캐치, 편집 됨. –
또 하나의 catch -'bookedIDs'는 콜렉션 조작 ('.Add','.Remove' 등)에 사용되지 않기 때문에'.ToList()'대신'.ToArray()'를 사용하십시오. 이 경우에 자동적으로 열거되기 때문에'.Contains (v.ID)'가 사용되는 유일한 장소가된다면 그것을 생략 할 수도 있습니다. – danludwig