我使用这段代码从表中获取想要的行列表:
```python
code
```
```html
这里的“results”仅包含其ID字段与selectedUserIDs列表中的元素匹配的记录。但问题在于,如果我查看Windows任务管理器,LINQ似乎会加载整个表格的所有行,然后再将它们过滤掉。这个表格中有大量的行,很快进程的重量就超过了1GB,这让我非常不喜欢。我可以看出它是因为完成所花费的时间而这样做的。有没有办法告诉LINQ生成一个查询,它看起来像:
我使用这段代码从表中获取想要的行列表:
```_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();
这里的“results”仅包含其ID字段与selectedUserIDs列表中的元素匹配的记录。但问题在于,如果我查看Windows任务管理器,LINQ似乎会加载整个表格的所有行,然后再将它们过滤掉。这个表格中有大量的行,很快进程的重量就超过了1GB,这让我非常不喜欢。我可以看出它是因为完成所花费的时间而这样做的。有没有办法告诉LINQ生成一个查询,它看起来像:
SELECT * FROM Users WHERE ID IN (34,55,66,77, etc.)
有什么方法可以只返回我所要查找的精确行,并且使用更少的内存?
谢谢!
In
语句是很多的。当列表项少于某个特定数量时,查询提供程序可能只能创建In
子句。理想情况下,ID值不应该在代码中以列表形式出现,而应该在数据库中的另一张表格中,并通过Join
操作连接。即使ID是临时的,将它们插入到临时表中然后进行Join
操作也可能是值得的。 - Servy