Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 实体框架计数差异_Sql_Entity Framework_C# 4.0_Entity Framework 4 - Fatal编程技术网

Sql 实体框架计数差异

Sql 实体框架计数差异,sql,entity-framework,c#-4.0,entity-framework-4,Sql,Entity Framework,C# 4.0,Entity Framework 4,我对实体框架(4)有些陌生。我一直在追踪我们软件中的一个bug,我已经把它锁定在了follow怪癖中。我很好奇是否有人能帮我解释为什么这两个计数(dataCount和data2Count)会因我调用它们的方式不同而有所不同。data2Count是正确的,并且实际上与我在SQL中拥有的匹配 using (var context = new Entities(ConnectionString)) { var startDateTime = Da

我对实体框架(4)有些陌生。我一直在追踪我们软件中的一个bug,我已经把它锁定在了follow怪癖中。我很好奇是否有人能帮我解释为什么这两个计数(dataCount和data2Count)会因我调用它们的方式不同而有所不同。data2Count是正确的,并且实际上与我在SQL中拥有的匹配

        using (var context = new Entities(ConnectionString))
        {
            var startDateTime = DateTime.Parse("10/1/2011");
            var endDateTime = DateTime.Parse("12/31/2011 23:59");

            var query = from data in context.vDATA
                        where data.ParentId == parentId &&
                        data.TimeStamp >= startDateTime &&
                        data.TimeStamp <= endDateTime
                        select data;

            var data = query.ToList();
            var dataCount = data.Where(x => x.TestType == 20).Count();
            //dataCount is 162

            var data2 = query.Where(x => x.TestType == 20);
            var data2Count = data2.Count();
            //data2Count is 198
        }
使用(var上下文=新实体(ConnectionString))
{
var startDateTime=DateTime.Parse(“2011年1月10日”);
var endDateTime=DateTime.Parse(“12/31/2011 23:59”);
var query=来自context.vDATA中的数据
其中data.ParentId==ParentId&&
data.TimeStamp>=startDateTime&&
data.TimeStamp x.TestType==20.Count();
//数据计数是162
var data2=query.Where(x=>x.TestType==20);
var data2Count=data2.Count();
//数据2计数为198
}

谢谢。

如何设置parentId?它是在运行此代码片段的循环之外声明的变量吗?如果是这样的话,这可能会因为关闭问题而显得有些古怪。为您提供了大量有关如何解决关闭问题的信息。

好吧,我想我已经找到并修复了发生的情况-尽管我不确定我能否在内部解释EF如何处理它。。。我在这里找到一篇文章:这听起来像是一个类似的问题。我在SQL中的数据有几个字段大致相同的记录。唯一有区别的字段是TestType。但它没有被标记为钥匙的一部分。只需扩展键以包含此字段,即可使计数正确匹配。

TestType列的类型是什么?它是一个可为空的整数。感谢您的反馈。这是一个伟大的想法;但是,我可以使用一个常量值(例如data.ParentId==129),并且仍然得到相同的结果。而且,没有循环,所以我不认为闭包是个问题。