【发布时间】:2011-04-06 05:17:09
【问题描述】:
如何优化这段代码?
ParentDoglist,ChildDoglistis - Ilist。 dogListBox - 列表框
foreach (Dog ParentDog in ParentDoglist)
{
foreach (Dog ChildDog in ChildDoglist)
{
if(ParentDog.StatusID==ChildDog.StatusID)
dogListBox.Items.Add(new ListItem(ParentDog.Name, ParentDog.Key));
}
}
编辑: ParentDogTypeList、DogTypeList改名为ParentDoglist、ChildDoglist,两者互不相关
if(ParentDog.Key==ChildDog.Key)
改为
if(ParentDog.StatusID==ChildDog.StatusID)
完整故事:
我需要填充一个下拉菜单,它会回报父子关系。有些狗可能没有孩子,被称为叶狗。而且我还需要显示该特定类别中的狗的数量
DD 看起来像
Parent1
Child11 (10)
Child12 (12)
Parent2
Child21 (23)
Child22 (20)
Leaf1 (20)
Leaf2 (34)
因此,ParentDoglist 会将所有子元素和叶子元素与计数一起带来,而 ChildDogList 将具有父 ID 和叶子 ID,因此我可以将相应的子元素填充到它们的父元素并直接绑定叶子。
Parent、Child 和 Leaf Dog 将保存在一个表中,并通过 statusid 进行区分,而 count 将在另一个表中。
没有父母有任何计数,只有孩子和叶子有计数
表架构:
【问题讨论】:
-
DogTypeList 是所有狗类型的列表,ParentDogTypeList 是狗类型的子集吗?
-
这些列表是否来自数据库?
-
@Sam Saffron 是的,这两个列表都来自 DB。
-
@Preet Sangha 我有超过 3 个相同类型的内部 foreach,所以我想减少 foreach
-
@Sri,那么您能否在此处编辑问题,包括您的表的数据库架构。直接查询可能最快
标签: c# foreach ilist optimization