所以我有两个存储库:存储库A 从数据库A 和存储库B 获取信息,它从数据库B获取信息
在存储库A 中,我得到一个列表,比方说5000,结果。现在,我想从存储库A 获取来自存储库B 的每个结果的信息,如果该值不为空或为空,则
。现在我在 Repos A 中有一个foreach循环,并在每个循环中调用 Repos B 的方法。我知道必须有一个更便宜的方法来做到这一点。有什么建议吗?
答案 0 :(得分:2)
假设这是Entity Framework,您可以通过在LINQ中执行WHERE X IN (...)
来使用Contains
。因此,您可以从存储库A中检索所有5000条记录,将ID列表放在一起,然后为存储库B构建单个LINQ查询 - 这可能符合您的需求:
int[] fooIDs;
using (var contextA = new ContextA()) {
fooIDs = contextA.Foos.Select(f => f.Id).ToArray();
}
using (var contextB = new ContextB()) {
var people = contextB.People
.Where(p => fooIDs.Contains(p.FooID));
}