我有一个查询(在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();
答案 0 :(得分:1)
解决了!
解决方案是在数据库表中设置主键。
非常感谢:)