0

int[]コントロールから選択したアイテムの数に応じて、さまざまな量の値を配列に格納する必要がありますCheckboxListcblSections)。

現時点では、これらの値をに格納して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;
    }
}
4

2 に答える 2

6

あなたが使用することができます:

int numSelected = cblSections.Items.Count(x => x.Selected);

配列をすぐに作成することもできます。

int[] sectionId = cblSections.Items
    .Where(x => x.Selected)
    .Select(x => x.Value)
    .ToArray();
于 2012-07-31T10:05:04.350 に答える
1

List代わりにオブジェクトを使用する必要があります。次に、これを入力したら、関数int[]を使用して直接変換できます。ToArray()

List<int> items = new List<int>();
items.ToArray();

注:ArrayListクラスにもToArray()関数があるように見えますが、Listとにかく使用する方が良いです...なぜですか? よくわからない、それは私が何度も耳にしたことの 1 つなので、当然のことと思って、元の理由を忘れてしまいました :/

于 2012-07-31T10:08:46.657 に答える