【发布时间】:2011-11-11 10:52:35
【问题描述】:
我有一个使用 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();
现在我在查询中硬编码用户 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();
我真的很难过。知道这里发生了什么吗?
【问题讨论】:
-
您实际上并没有告诉我们问题是什么(我可以看到)。是返回你想要的两个结果吗?
-
查询应该返回两个结果,是的。但更广泛的问题是,如果我在 where 子句中使用变量而不是硬编码值,为什么查询不起作用??
-
它没有理由不工作。也许您还有另一个
userId变量,其大小写不同。 -
@draconis 你可能需要做一些实验。我同意 leppie 的观点,即问题一定出在我们看不到的东西上。
-
另外,说到名字的大小写:stackoverflow.com/questions/264823/…
标签: linq entity-framework-4 sql-server-ce