Sql LINQ查询在内存数据上使用时返回错误的结果

Sql LINQ查询在内存数据上使用时返回错误的结果,sql,linq,Sql,Linq,我有一个在SSMS中运行的查询(SQL),并得到一个包含32行的结果集,就像我想要的那样 然后,我将SQL查询逐行转换为LINQ查询,并在Visual Studio中对同一个数据库运行它,得到一个包含32行的列表,就像我想要的那样 问题来了。 如果我做这样的事 MyEntities entities = new MyEntities(); List<MyEntity> resultset = entities.MyEntity.ToList(); MyEntities entiti

我有一个在SSMS中运行的查询(SQL),并得到一个包含32行的结果集,就像我想要的那样

然后,我将SQL查询逐行转换为LINQ查询,并在Visual Studio中对同一个数据库运行它,得到一个包含32行的列表,就像我想要的那样

问题来了。 如果我做这样的事

MyEntities entities = new MyEntities();
List<MyEntity> resultset = entities.MyEntity.ToList();
MyEntities entities=new MyEntities();
List resultset=entities.MyEntity.ToList();
…然后对内存中的数据集合运行LINQ查询,我只得到27行,现在有些行被重复,因此它们甚至不明显-但它们肯定在数据库中

我认为这是因为LINQ在向数据库发送查询时生成SQL(因此结果是正确的),但当目标是内存中的数据结构时,会执行其他操作。不知道这里发生了什么。有什么想法吗?提前谢谢

编辑:只是澄清一下。这给出了正确的结果

List<MyEntity> results = entities.MyEntity.Where(x => x == ...).ToList();
List results=entities.MyEntity.Where(x=>x==…).ToList();
这是不可能的

MyEntities entities = new MyEntities();
List<MyEntity> listData = entities.MyEntity.ToList();

List<MyEntity> results = listData.Where(x => x == ...).ToList();
MyEntities entities=new MyEntities();
List listData=entities.MyEntity.ToList();
List results=listData.Where(x=>x==…).ToList();
解决了它

解决方案是在数据库表中设置主键

无论如何谢谢:)

解决了

解决方案是在数据库表中设置主键


谢谢:)

生成的SQL查询是什么?签入SQL Server Profiler。造成这种差异的一个常见原因是SQL(通常)不区分大小写,而linq to对象区分大小写。很遗憾,我没有在服务器上运行跟踪的权限。也许我不够清楚..当我说直接对数据库运行查询时返回正确的结果时,这就是我的意思。。List result=entities.MyEntity.Where(x=>x=...ToList();生成的SQL查询是什么?签入SQL Server Profiler。造成这种差异的一个常见原因是SQL(通常)不区分大小写,而linq to对象区分大小写。很遗憾,我没有在服务器上运行跟踪的权限。也许我不够清楚..当我说直接对数据库运行查询时返回正确的结果时,这就是我的意思。。List result=entities.MyEntity.Where(x=>x=...ToList();