我在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;
}
答案 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