2

我需要查询具有 CheckedListBoxItemCollection 的 winforms 控件(CheckedListBoxControl ,我想查询CheckedListBoxItem的属性“Value”内的某个Id

CheckedListBoxItemCollection items = myCheckedListBoxControl.Items;

foreach(Department dep in departmentList)
{
  bool isDepExisting = items.AsQueryable().Where( the .Where clause does not exist );
  // How can I query for the current dep.Id in the departmentList and compare this   dep.Id with  every Item.Value in the CheckedListBoxControl and return a bool from the result ???   
  if(!isDepExisting)
      myCheckedListBoxControl.Items.Add( new CheckedListBoxItem(dep.id);
}

更新:

IEnumberable<CheckedListBoxItem> checks = items.Cast<CheckedListBoxItem>().Where(item => item.Value.Equals(dep.InternalId));

为什么说 Visual Studio 找不到它的 IEnumerable 或 IEnumberable 命名空间?当我改用“var”时,我可以编译我的代码。但是我公司的老板禁止我使用var...

4

1 回答 1

1

CheckListBox.Items 只实现 IEnumerable,而不是IEnumerable<T>. 你会得到返回 IQueryable 的 AsQueryable() 的重载(不是通用的)。其中只有 Cast 和 OfType 扩展方法。

将项目从对象投射回部门。像这样:

var q = checkedListBox1.Items.Cast<Department>().AsQueryable().Where((d) => d.Id == 1);

顺便说一句,您不再需要 AsQueryable() 。

于 2010-08-27T20:21:13.093 回答