如何从Windows窗体中的列表对象中删除项目?

时间:2016-01-05 12:16:30

标签: c# winforms windows-forms-designer

我在List对象( objListEmp )中有一个雇员列表,如下所示。

Dinesh    
Upendra
Chandrakanth(Deleted)

我现在的问题是,我希望在处于活动模式的Windows应用程序中的Combox中显示员工,即

Dinesh    
UPendra

我将用于将数据绑定到ComboBox的代码是

if (objListEmp != null)
{
    cmbAssignedSelector.DataSource = new BindingSource(objListEmp, null);
    cmbAssignedSelector.DisplayMember = "Value";
    cmbAssignedSelector.ValueMember = "Key";
}
else
{
    cmbAssignedSelector.SelectedIndex = 0;
}

我试过如下所示

if (objListEmp != null)
{
    cmbAssignedSelector.DataSource = new BindingSource(objListEmp.Where(x=>x.Value.Split('(').ToString()!="InActive").ToList(), null);
    cmbAssignedSelector.DisplayMember = "Value";
    cmbAssignedSelector.ValueMember = "Key";
}
else
{
    cmbAssignedSelector.SelectedIndex = 0;
}

3 个答案:

答案 0 :(得分:2)

你可以使用where子句和提及谓词,它只会雇用活跃的员工(或者你可以根据你的要求设置任何其他自定义条件。)

 objListEmp = objListEmp.Where(x=>!x.Inactive).ToList();

在这种情况下你也可以比较字符串。

 objListEmp = objListEmp.Where(x=>x.Status!=="InActive").ToList();

答案 1 :(得分:1)

更改此行:

 cmbAssignedSelector.DataSource = new BindingSource(objListEmp, null);

cmbAssignedSelector.DataSource = new BindingSource(objListEmp.Where(x=>x.Isactive).ToList(), null);

如果一个IsActive字段是字符串,你可以保存bool vale,例如' True'你需要像这样投射

  cmbAssignedSelector.DataSource = new BindingSource(objListEmp.Where(x=>(bool)x.Isactive).ToList(), null);

如果你保存' IsActive'在一个字段中你只需要比较这样的字符串:

objListEmp.Where(x=>x.Isactive.ToLower()="isactive").ToList()

答案 2 :(得分:0)

if (objListEmp != null)
{
    // To remove Deleted user from list
    var sorted = from employee in objListEmp
                 where !employee.Value.Contains("Deleted")
                 select employee;

    cmbAssignedSelector.DataSource = new BindingSource(sorted, null);
    cmbAssignedSelector.DisplayMember = "Value";
    cmbAssignedSelector.ValueMember = "Key";
}
else
{
    cmbAssignedSelector.SelectedIndex = 0;
}

输出:

Dinesh
Upendra