![]() |
1
1
首先,循环浏览所有类别。然后,在该循环中,循环遍历该类别下的所有子类别。在这里,我将数据直接输出到HTML中;如果您想填充列表,也可以填充列表。
当然,如果你能加入
|
![]() |
2
0
与其他方法相比,直接使用ado.net更复杂,效率更低。 MS引入了数据访问的实体框架,您的数据访问代码可以简化为如下内容:
|
![]() |
3
0
你让你的生活变得更加困难。 我推荐两样东西: 1)照@Shiraz说的做-使用实体框架 2)如果不可能,为什么不使用 单个存储过程 ,它基本上执行联合或联接(不完全确定您的模式/逻辑)。 将类别合并/缝合的代码是一个数据库问题,不应该在代码中这样做。 |
![]() |
4
0
1.-如果(仅当所有类别包括所有子类别)按类别名称排序,则创建一个使两个表交叉连接的单一存储过程 2.-将category对象更改为具有类别的子集,以便可以将子类别添加到category对象中
|
![]() |
5
0
调用一个存储过程的C代码,该存储过程返回一个已排序的数据列表,填充一个数据表并循环它,这在极端情况下非常简单。 C#代码
使用数据表的明显好处是:轻量级、可序列化、断开连接—所有这些都允许应用程序具有性能和可扩展性。但是,如果您需要这样做的话,没有什么可以阻止您循环数据表并填充您自己的集合! 问题的最困难部分是编写单个存储过程的代码,该存储过程按所需的顺序返回数据。就我个人而言,我将使用邻接列表方法以及存储过程和公共表表达式(CTE)来实现类别层次结构。这种方法的优点是,类别层次结构可以是多级的,编码简单,并且比其他方法(如嵌套集)更易于管理和维护。 有关CTE的更多信息-请参阅 http://msdn.microsoft.com/en-us/library/ms190766.aspx 不幸的是,我现在手头上只有一个MySQL实现,这个实现有点冗长,因为MySQL缺乏在RDBMS(如SQL Server(CTE)和Oracle(connect by))中使这个任务变得微不足道的特性。然而,web上有大量的资源将向您展示如何使用CTE和存储过程来完成您需要的工作。如果你对我如何在MySQL中实现这一点感兴趣,我在这个答案的底部提供了一个完整源代码的链接。 无论您使用何种RDBMS,存储过程的结果都应该如下所示:
我的答案的完整源代码可以在这里找到: http://pastie.org/1331218 希望这证明你感兴趣:) |