【发布时间】:2011-02-14 15:53:58
【问题描述】:
针对特定视图的 SQL 查询返回 3 个不同的行。
select * from vwSummary
where vidate >= '10-15-2010' and vidate <= '10-15-2010'
and idno = '0330'
order by viDate
但是如果我通过我的实体框架运行相同的查询,我会得到 3 行,但所有 3 行都是相同的,相当于第三行。
firstVisibleDate = new DateTime(2010, 10, 15);
lastVisibleDate = new DateTime(2010, 10, 15);
var p1 = (from v in db.vwSummary
where v.viDate >= firstVisibleDate && v.viDate <= lastVisibleDate
&& v.IDNo == "0330"
select v).ToList();
谁能帮我解决这个问题。
编辑: 我像这样更改了我的查询并且它有效。但是我仍然想回到上面显示的那个,因为我必须再次迭代以进行更多处理。
List<objectName> p1 = (from v in db.vwSummary
where v.viDate >= firstVisibleDate && v.viDate <= lastVisibleDate
&& v.IDNo == "0330"
select new <ObjectName>
{
a = v.a
b = v.b
}
).ToList<ObjectName>();
【问题讨论】:
-
有点疯狂的猜测,但可能是代码中定义的 DateTime 将时间包括为午夜,而 SQL 中定义的 DateTime 仅定义了日期。即您的 SQL 正在返回当天的所有内容,但代码正在返回午夜的所有内容。不知道为什么你会得到相同数量的结果。
-
是的,这仍然让我感到困惑。我尝试使用日期时间,但找不到线索。
-
我尝试重新构建实体模型,只是为了确保它们同步。还是没有成功。
-
看看单独的 where 子句彼此相邻而不是 && 会发生什么。
where v.viDate >= firstVisibleDatewhere v.viDate <= lastVisibleDatewhere v.IDNo == "0330"我不知道这是否会有所作为,但值得一试。 -
我的猜测是问题在于你如何使用结果,而你没有显示出来。
标签: c# entity-framework sql-server-2008 duplicates