【发布时间】:2019-08-30 16:08:32
【问题描述】:
我有一个看起来像这样的设置
foreach(Master m in masters){
m.details = allDetails.Where(d => d.ID == m.detailID).ToList();
}
masters 和 AllDetails 只是对象列表,这里没有运行实际的 SQL。我早些时候这样做了。我实际上并没有写一个“正常”的 sql 连接查询,因为我希望这种方式会相当快......
这运行速度非常慢,例如 20 秒以上的 20k 主条目。
我知道我一定遗漏了一些非常明显的东西,但我就是不知道是什么。有什么办法可以解决这个超常见的问题?
【问题讨论】:
-
选择在数据库中运行的位置会快得多。而且,据我们所知,您还没有实现
allDetails,因此,对于每个大师,您都在访问数据库。为防止这种情况,当您创建allDetails时,请在可查询对象上执行 .ToArray()。 -
我认为正常的连接会很快,因为它会创建一个主 ID 哈希和一个 allDetails 哈希。仅当您没有足够的内存时,连接才会运行缓慢。
标签: c# linq master-detail