我正在使用这段代码从表中获取所需的行列表:
_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.)
这只会返回我正在寻找的确切行并使用更少的内存?
谢谢!