1

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();
4

1 に答える 1

1

解決しました!

解決策は、データベーステーブルに主キーを設定することでした。

とにかくありがとう :)

于 2012-12-03T11:57:47.323 に答える