我需要在int[]
数组中存储不同数量的值,具体取决于从CheckboxList
控件(cblSections
)中选择了多少项。
目前我将这些值存储在ArrayList
中,然后确定此对象的长度,并根据该对象设置int[]
对象的大小。
有没有更好的方法来做到这一点,这涉及更少的代码(和更少的对象!)?
ArrayList alSectionId = new ArrayList();
foreach (ListItem item in cblSections.Items) {
if (item.Selected) {
alSectionId.Add(item.Value);
}
}
int[] sectionId = new int[(alSectionId.Count - 1) + 1];
if (alSectionId.Count > 0) {
int i = 0;
foreach (int sId in alSectionId) {
sectionId[i] = sId;
i += 1;
}
}
答案 0 :(得分:6)
您可以使用:
int numSelected = cblSections.Items.Count(x => x.Selected);
您还可以立即生成阵列:
int[] sectionId = cblSections.Items
.Where(x => x.Selected)
.Select(x => x.Value)
.ToArray();
答案 1 :(得分:1)
您应该使用List
对象。然后,一旦填充了此内容,您就可以使用int[]
函数将其直接转换为ToArray()
:
List<int> items = new List<int>();
items.ToArray();
注意:虽然ArrayList
类似乎也有ToArray()
函数,但最好还是使用List
...为什么?我不知道,这是我听过很多次的事情之一,我只是理所当然地忘记原因:/