Как вернуть пользовательские объекты с помощью Except

Я использую ASP.NET MVC, C# и SQL Server.

Я хочу получить список автомобилей, которые можно арендовать в течение определенной даты, т.е. еще не сдан в аренду.

Теперь я получил что-то вроде того, что взял все машины со стола машин, кроме тех, у которых был заказ на указанную дату (вместо того, чтобы проверять каждую машину отдельно на заказ):

var query = db.Cars.Select(r => r.ID)
    .Except(db.Orders
        .Where(o => (startDate >= o.RentalStart 
            && startDate <= o.RentalReturn))
                Select(r => r.Car.ID));

Проблема в том, что я хочу вернуть пользовательский объект, и я не уверен, как это сделать, кроме как, поэтому я всегда мог получить идентификатор, а на основе идентификатора получить весь объект с другим методом / запросом.

Но я хотел бы получить что-то вроде:

Select(c => new myModel
{
    ID = c.ID,
    property1 = c.property1,
    property2 = c.property2,
    property3 = c.property3,
    property4 = c.property4,
});

1 ответ

Что вы можете сделать, это отфильтровать Cars список, где идентификатор не содержится в наборе недействительных идентификаторов заказа.

var invalidOrders = db.Orders
    .Where(o => startDate >= o.RentalStart && startDate <= o.RentalReturn)
    .Select(r => r.Car.ID)

var query = db.Cars.Where(car => !invalidOrders.Contains(car.ID));
Другие вопросы по тегам