C#在RadComboboxItem上使用.Contains搜索字符串

时间:2015-07-06 15:36:22

标签: c# linq telerik type-conversion radcombobox

目前我正在尝试创建一些级联组合框。该程序有4个RadComboBoxes(telerik控件)。我将默认数据放入下拉列表中,一切都很好。我可以从这些盒子中多选。当我从方框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的数据源成为tblPartStyles的PartGroup字段,其中Program字段位于rcbProgram的检查列表中。这样可以正常工作,但rcbProgram.CheckedList是一个List,不会与字符串(程序字段值)进行比较。如果两者都是字符串,我仍然很难知道这将如何工作,但现在我有2种不同的类型,我无法转换。任何人都知道我可以做任何事情来完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

起初我对lambda语句感到有些困惑。我做了一个简单的修复。我创建了一个字符串列表,并通过foreach运行以在CheckedItems列表中添加值。然后我使用字符串列表来执行lambda过滤器。

 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();

    }