linq - Linq 的奇怪行为

标签 linq entity-framework-4 sql-server-ce

我有一个运行着 Sql Server CE 3.5 数据库的 Windows 窗体应用程序 (.NET 4.0),我通过 EF 连接访问它。

这是我的初始查询,它返回两个结果:

var list = db.UserPresentation
                         .Select(up => new
                         {
                             UserPresentationID = up.UserPresentationID,
                             PresentationName = up.PresentationName,
                             DateRequested = up.DateRequested,
                             Edit = string.Empty,
                             Delete = string.Empty,
                             Download = string.Empty
                         })
                         .OrderByDescending(up => up.DateRequested)
                         .ToList();

现在我引入了一个外部变量和一个 where 子句,它返回零结果。如果我在 LinqPad 中运行相同的代码,它会返回 2 个结果。

 int userID = 2;

            // load list of user presentations
            var list = db.UserPresentation
                         .Where(up => up.UserID == userID)
                         .Select(up => new
                         {
                             UserPresentationID = up.UserPresentationID,
                             PresentationName = up.PresentationName,
                             DateRequested = up.DateRequested,
                             Edit = string.Empty,
                             Delete = string.Empty,
                             Download = string.Empty
                         })
                         .OrderByDescending(up => up.DateRequested)
                         .ToList();

现在我在查询中硬编码 userid,它再次返回两个结果:

var list = db.UserPresentation
                         .Where(up => up.UserID == 2)
                         .Select(up => new
                         {
                             UserPresentationID = up.UserPresentationID,
                             PresentationName = up.PresentationName,
                             DateRequested = up.DateRequested,
                             Edit = string.Empty,
                             Delete = string.Empty,
                             Download = string.Empty
                         })
                         .OrderByDescending(up => up.DateRequested)
                         .ToList();

我真的很难过。知道这里发生了什么吗?

最佳答案

UserID 可以为空吗?

如果是,请务必执行 .Where(up => up.UserID.HasValue && up.UserID.Value == userID)

我曾经有过类似的可空日期时间

关于linq - Linq 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092911/

相关文章:

c# - 在 WinForms 应用程序中使用外部 DLL 需要哪些配置?

.net - 如何在使用EF4首先使用模型创建的表中添加表前缀?

sql-server - 弃用 ntext、text 和 image 是否会影响 SQL Server Compact Edition?

entity-framework - 如何为 Entity Framework 4.3 和 SQL Server Compact 4.0 创建 Bootstrap 类

java - 如何读取SQL Server Compact Edition文件(SDF+Java)?

c# - LINQ 查询表达式和扩展方法有什么区别

c# - 获取嵌套在列表中的最大计数列表

c# - 如何使用嵌套的 ObservableCollection 将数据 LINQ 到 ObservableCollection 中?

c# - linq to sql中开始结束时间列表的平均时间

entity-framework - 更新 Entity Framework - 需要修补程序