このコードを使用して、テーブルから目的の行のリストを取得しています。
_userObjectSet = EntityFrameWorkContext.CreateObjectSet<User>();
List<int> selectedUserIDs = Method(); //Returns a specific set of int user IDs...
var results = _userObjectSet.Where(c => selectedUserIDs.Contains(c.ID)).ToList();
「結果」には、ID フィールドが selectedUserIDs リストの要素と一致するレコードのみが含まれるため、これは機能します。
問題は、Windows タスク マネージャーを見ると、LINQ がすべてのテーブルの行を読み込んで、それらを除外しているように見えることです。このテーブルには膨大な数の行があり、すぐにプロセスの重みが 1GB を超えてしまいます。これはあまり好きではありません。
完了するまでに時間がかかるため、これを行っていることもわかります。
次のようなクエリを生成するように LINQ に指示する方法はありますか。
SELECT * FROM Users WHERE ID IN (34,55,66,77, etc.)
探している正確な行のみを返し、メモリの使用量が少ないのはどれですか?
ありがとう!