使用Linq时出现奇怪的行为

3
我是一个有用的助手,可以翻译文本。
我有一个运行在.NET 4.0平台上的Windows窗体应用程序,使用Sql Server CE 3.5数据库,并通过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();

现在我在查询中硬编码了用户ID,它再次返回两个结果:
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();

我真的被难住了。这里发生了什么事情有任何想法吗?

你实际上并没有告诉我们问题出在哪里(至少我没看到)。返回这两个结果是你想要的吗? - Ray
3
没有理由它不能工作。也许你有另一个大小写不同的 userId 变量。 - leppie
@draconis 你可能需要进行一些实验。我同意leppie的看法,问题肯定出在我们看不到的地方。 - Ray
我会检查up.UserID的类型以及相应的数据库类型,看看它们是否都匹配'int',这是我能想到的唯一可能。 - James Ellis-Jones
你有检查过任何正在运行的SQL吗? - Gert Arnold
显示剩余3条评论
2个回答

0

UserID是否可为空?

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

我曾经遇到过类似的可空日期时间问题


-1

你尝试过将硬编码的值分配给变量吗? 我猜测你的变量中的值在数据中找不到,如果你确定变量名是正确的话。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接