【发布时间】:2015-04-07 17:22:57
【问题描述】:
我在使用 linQ 中的 .Contains 方法时遇到问题。它给出了戏剧性的结果 :( 有很多线程,但在 vb.net 中没有,我有点迷路了
假设我的数据集中有 2 个数据表:
-第一个保持一个TREE结构(可以这样看):
Category (.id="1")
|- Genre a (.id="13")
|- Genre b (.id="15")
|- ...
|- Genre n
-第二个保留数据(20.000行)
数据中的每一行都附加到树中的一个节点(主类别或子类别(流派)) 简单地说,每一行都有一个具有正确 Id 的 .Genre_Id 属性
查询一个简单的节点非常容易。 但我需要查询我的数据集以获取“该类别中的所有行,包括其子类别中的所有行”
到目前为止,我一直在使用这个代码:
dim lnQ = (From data In tblData _
Where data.Genre_Id = "1" _
OrElse (From genre In tblStructure _
Where genre.parent_Id = "1" _
Select genre.Id).Contains(data.Genre_Id) _
Select data).ToList
它可以工作,但对大型数据库有非常糟糕的影响。
完全避免在 vb.net 中使用 .Contains() 方法的正确解决方法是什么? 我需要最快的解决方案,因为我的数据库将来会增长到 50.000 行!
我已尝试加入,但无法使其正常工作。 提前致谢!
【问题讨论】:
-
您的解决方案有什么问题。它会给你一个错误、错误的结果,还是只是速度慢?
-
速度!大约需要 20/30 秒。同一数据库上的其他查询需要 0.0.100 ! .Contains() 是原因
标签: vb.net linq subquery contains