如何使用Except返回自定义对象

时间:2014-08-25 16:09:22

标签: c# sql-server asp.net-mvc linq-method-syntax

我正在使用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));

问题是我想要返回一个自定义对象,我不知道如何使用除了,所以我总是可以获取ID,并且基于ID获取整个对象使用不同的方法/查询

但我希望得到类似的东西:

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

1 个答案:

答案 0 :(得分:0)

您可以做的是过滤Cars列表,其中ID不包含在无效订单ID集中。

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));