SSMS で実行する (SQL の) クエリがあり、必要に応じて 32 行の結果セットを取得します。
次に、SQL クエリを LINQ クエリに 1 行ずつ変換し、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();