【问题标题】:How to return custom objects using Except如何使用 except 返回自定义对象
【发布时间】:2014-08-25 16:09:21
【问题描述】:

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

问题是我想返回一个自定义对象,但我不确定如何使用 except,所以我总是可以获取 ID,并根据 ID 使用不同的方法/查询获取整个对象.

但我想得到类似的东西:

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

【问题讨论】:

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


    【解决方案1】:

    您可以做的是过滤 ID 不包含在无效订单 ID 集中的 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));
    

    【讨论】:

    • 谢谢 :) 我自己得到了第一部分,但只有第二部分的一半......我的下一个问题是,是否有可能在一个查询中完成所有这些?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2020-01-05
    • 2016-02-17
    • 2012-08-30
    • 2019-02-17
    • 2020-04-28
    相关资源
    最近更新 更多