我有一个Windows窗体应用程序(.NET 4.0)运行一个Sql Server CE 3.5数据库,我通过EF连接访问。奇怪的行为与Linq
这里是我的初始查询,返回两个结果:
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
查询应该返回两个结果,是的。但更广泛的问题是,为什么查询不起作用,如果我在where子句中使用变量而不是硬编码值? – draconis
没有理由不应该工作。也许你有另一个'userId'变量具有不同的外壳。 – leppie