Контрольный список выбранных элементов из LinQ - PullRequest
0 голосов
/ 19 октября 2011

Я пишу следующую строку кода для извлечения выбранных элементов в контрольном списке.

ListItemCollection ChecklistBoxCollection = new ListItemCollection();
            foreach (ListItem ChecklistBoxItem in ChecklistBox.Items)
                if (ChecklistBox.Selected)
                    ChecklistCollection.Add(ChecklistBox);

Есть ли способ получить эти предметы в LinQ?

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Нет автоматического преобразования в ListItemCollection, но вы можете использовать AddRange, чтобы добавить выбранные элементы сразу.Я не уверен, что это значительное улучшение и может быть медленнее, потому что AddRange принимает только массив.

ListItemCollection ChecklistBoxCollection = new ListItemCollection();
ChecklistBoxCollection.AddRange( checklistBox.Items
                                             .Cast<ListItem>()
                                             .Where( i => i.Selected )
                                             .ToArray() );
0 голосов
/ 19 октября 2011

Я использовал эти методы расширения.

    public static List<string> GetCheckedValues(this CheckBoxList list)
    {
        var values = new List<string>();
        values.AddRange(from ListItem item in list.Items
                    where item.Selected
                    select item.Value);
        return values;
    }

    public static List<string> GetCheckedTexts(this CheckBoxList list)
    {
        var values = new List<string>();
        values.AddRange(from ListItem item in list.Items
                    where item.Selected
                    select item.Text);
        return values;
    }
...