在int []对象中存储不同数量的值

时间:2012-07-31 10:03:24

标签: c# asp.net arrays

我需要在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;
    }
}

2 个答案:

答案 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 ...为什么?我不知道,这是我听过很多次的事情之一,我只是理所当然地忘记原因:/