Как вернуть пользовательские объекты с помощью 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));