【发布时间】:2019-11-15 02:58:56
【问题描述】:
试图避免在下面的代码中使用两个嵌套的 for 循环,但我似乎想不出一种无需使用两个 for 循环即可加入两个 DataTable 的方法。请注意,两个 DataTable 都是动态的,这就是为什么我无法在 SQL Query 级别解决问题的原因。
下面的 DataTable 从数据库中获取所有部分。他们是 数量有限但充满活力。
Dim dtSections As DataTable = HomeSections()
遍历各个部分并获取每个部分的所有相关项:
If dtSections.Rows.Count > 0 Then
For Each mySectionRow As DataRow In dtSections.Rows
Dim dtItems As DataTable = getItemsBySection(sectionId)
If dtItems.Rows.Count > 0 Then
For Each myItemRow As DataRow In dtItems.Rows
'Some HTML population
Next
End if
Next
End if
我想知道当第二个 DataTable 的值取决于第一个 DataTable 的值时,避免使用嵌套 for 循环的最佳方法是什么。我曾想过使用 DataSet,但我认为我无法根据第一个 DataTable 的结果生成第二个 DataTable。
这个问题应该在代码层面解决还是在SQL层面(比如存储过程)解决?
【问题讨论】:
-
为什么要首先避免嵌套循环?
-
@jmcilhinney O(n) 优于 O(n2)。尝试改进 TTFB。
-
我们在谈论多少数据? “请注意,两个数据表都是动态的”。这甚至意味着什么?
-
O(n)... 您希望在嵌套循环中处理多少条记录?
-
@jmcilhinney 少于 300 条记录。
标签: vb.net performance for-loop optimization datatable