我有一个查询(在 SQL 中),我在 SSMS 中运行并得到一个包含 32 行的结果集,就像我想要的那样。
然后,我将我的 SQL 查询逐行转换为 LINQ 查询,并在 Visual Studio 中针对同一个数据库运行它,并得到一个包含 32 行的列表——就像我想要的那样。
问题来了。如果我做这样的事情
MyEntities entities = new MyEntities();
List<MyEntity> resultset = entities.MyEntity.ToList();
...并针对内存中的数据集合运行我的 LINQ 查询,我只得到 27 行,现在有些行重复了,所以它们甚至没有区别——但它们肯定在数据库中。
我认为这是因为 LINQ 在向数据库发送查询时会生成 SQL(因此结果是正确的),但当目标是内存数据结构时会执行其他操作。不知道这里发生了什么。有什么想法吗?提前致谢!
编辑:只是为了澄清。这给出了正确的结果
List<MyEntity> 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();