1

我有一个查询(在 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();
4

1 回答 1

1

解决了!

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

不管怎么说,还是要谢谢你 :)

于 2012-12-03T11:57:47.323 回答