如何在Windows窗体中从列表对象中删除项目
本文关键字:列表 对象 删除项目 窗体 Windows | 更新日期: 2023-09-27 18:29:10
I have a employees List in List object(objListEmp)如下所示。
Dinesh
Upendra
Chandrakanth(Deleted)
我现在的问题是,我想在窗口应用程序的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;
}
您可以使用where子句并提及谓词,该谓词只接受活动的员工(或者您可以根据您的需求设置任何其他自定义条件。)
objListEmp = objListEmp.Where(x=>!x.Inactive).ToList();
在这种情况下,您也可以比较字符串。
objListEmp = objListEmp.Where(x=>x.Status!=="InActive").ToList();
更改此行:
cmbAssignedSelector.DataSource = new BindingSource(objListEmp, null);
至
cmbAssignedSelector.DataSource = new BindingSource(objListEmp.Where(x=>x.Isactive).ToList(), null);
如果一个IsActive字段是字符串,并且你将布尔值保存在像"True"这样的字段中,那么你需要像这个一样在之前进行强制转换
cmbAssignedSelector.DataSource = new BindingSource(objListEmp.Where(x=>(bool)x.Isactive).ToList(), null);
如果你在字段中保存"IsActive",你只需要与字符串进行比较,如下所示:
objListEmp.Where(x=>x.Isactive.ToLower()="isactive").ToList()
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