C# Использование .Contains в RadComboboxItem для поиска строки

В настоящее время я пытаюсь создать несколько каскадных полей со списком. В программе есть 4 RadComboBoxes (управление телериком). Я помещаю данные по умолчанию в раскрывающиеся списки, и все хорошо. Я могу сделать множественный выбор из этих полей. Когда я выбираю значения из поля 1, он должен фильтровать варианты в поле 2.

protected void rcbProgram_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {            
        rcbPartGroup.DataSource = db.tblPartStyles.Where(c=>rcbProgram.CheckedItems.Contains(c.Program)).Select(c => c.PartGroup);
        rcbPartGroup.DataBind();

    }

Я хочу, чтобы источником данных rcbPartGroup было поле PartGroup tblPartStyles, где поле Program находится в проверенном списке rcbProgram. Это будет работать нормально, но rcbProgram.CheckedList является списком и не будет сравниваться со строкой (значение поля программы). Мне все еще трудно понять, как это будет работать, если оба являются строками, но теперь у меня есть 2 разных типа, которые мне не удается преобразовать. Кто-нибудь знает что-нибудь, что я могу сделать, чтобы это сработало?


person kereberos    schedule 06.07.2015    source источник
comment
Не могли бы вы составить список строк, а затем перебрать отмеченные элементы, выбрать нужные строки и добавить их в новый список? как foreach (элемент var в rcbProgram.CheckedItems)   -  person psoshmo    schedule 06.07.2015
comment
Это то, что я сделал. использование .Contains таким образом было более запутанным, чем трудно было придумать решение.   -  person kereberos    schedule 06.07.2015
comment
Рад, что у вас все заработало :)   -  person psoshmo    schedule 06.07.2015


Ответы (1)


Сначала меня немного смутил оператор лямбда. Я сделал простое исправление. Я создал список строк и выполнил foreach, чтобы добавить значения в список CheckedItems. Затем я использовал список строк для выполнения лямбда-фильтра.

 protected void rcbProgram_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        **List<String> _selectedItems = new List<String>();
        foreach (RadComboBoxItem i in rcbProgram.CheckedItems)
        {
            _selectedItems.Add(i.Value);
        }**


        rcbPartGroup.DataSource = db.tblPartStyles.Where(c=>_selectedItems.Contains(c.Program)).Select(c => c.PartGroup).Distinct();
        rcbPartGroup.DataBind();

    }
person kereberos    schedule 06.07.2015