c# - Linq to Sql.Except 在 C# 中为 null 时不工作

标签 c# linq linq-to-sql

我有一个简单的查询。

它检查房间列表 - prebookedRooms

然后它检查另一个房间列表,但使用 .Except 运算符从后续列表中删除任何 prebookedRooms:

        // Get list of rooms already booked
        var prebookedRooms = dbt.Rooms
            .Where(room => room.Rentals.Any(rental =>
                (dteFrom >= rental.check_in && dteFrom < rental.check_out)));

        // Get list of rooms
        var rooms = dbt.Rooms.Where(r => r.h_id == AccID)
            .Except(prebookedRooms)
            .GroupBy(p => p.RoomTypes).Select(g => new RatesViewModel
            {
                TypeName = g.Key.t_name,
                TypeID = g.Key.t_id,
                TypeCount = g.Count()
            })
            .ToList();

这工作正常 - rooms 返回房间列表,prebookedRooms 被排除在外。

但是,如果 prebookedRooms 没有返回任何记录(即 Empty “Enumeration yielded no results”)——那么我在执行第二个查询时会出错 (var rooms = ...) :

转换为值类型“Int64”失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可空类型。

在第二个查询中是否有检查 prebookedRooms 是否为空的方法,这样我就可以避免这个错误?

prebookedRooms 模型:

public class Room
{
    [Key]
    public long room_id { get; set; }
    public long hotel_id { get; set; }
    public long type_id { get; set; }
}

VS 中出现的错误是: enter image description here

谢谢,

标记

最佳答案

难道你不能从 Except 中辞职并写下:

    var rooms = dbt.Rooms.Where(r => r.h_id == AccID)
        .Where(room => !room.Rentals.Any(rental =>
            (dteFrom >= rental.check_in && dteFrom < rental.check_out))).
        .GroupBy(p => p.RoomTypes).Select(g => new RatesViewModel
        {
            TypeName = g.Key.t_name,
            TypeID = g.Key.t_id,
            TypeCount = g.Count()
        })
        .ToList();

关于c# - Linq to Sql.Except 在 C# 中为 null 时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874535/

相关文章:

c# - 还有一个 "Use of unassigned local variable ' 随便什么'“问题

c# - MVVM的EF5 SaveChanges

linq - LINQ 查询返回的 Int 列表

linq-to-sql - 无法格式化节点 'Value' 以作为 SQL 执行

c# - LINQ to SQL 未映射的属性

c# - 在 c# wpf 中,我可以将 listview 列动态构建为类方法吗?

使用 HttpClient 的 C# application/x-www-form-urlencoded OAuth 和 HTTP REST 请求

c# - 如果 model 为 null ,如何处理 null 异常,如何在 mvc 的 View 中处理它?

c# - 动态创建排序 Lambda 表达式

c# - 使用 LINQ to SQL 对搜索结果进行分页