1
我有一個查詢(在SQL中),我在SSMS中運行並獲得結果集與32行,就像我想要的。當在內存數據上使用LINQ查詢返回錯誤的結果
然後,我將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();
什麼是生成的SQL查詢?檢入SQL Server Profiler。 –
這種差異的一個常見原因是Sql(通常)不區分大小寫,其中linq與對象區分大小寫。 – sgmoore
不幸的是,我沒有權限在服務器上運行跟蹤。 也許我還不夠清楚..當我說當查詢直接對數據庫運行時返回正確的結果,這就是我的意思.. 列表結果= entities.MyEntity.Where(x = > x = ..)。ToList(); –