Запросите элемент управления winforms с CheckedListBoxItemCollection.AsQueryable (). Provider.CreateQuery ( - PullRequest
2 голосов
/ 27 августа 2010

Мне нужно запросить элемент управления winforms ( CheckedListBoxControl ), имеющий CheckedListBoxItemCollection , который я хочу запросить для определенного Id , который находится в свойстве "Значение""из CheckedListBoxItem .

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», я могу скомпилировать свой код.Но босс в моей компании запрещает мне использовать вар ...

1 Ответ

1 голос
/ 28 августа 2010

CheckListBox. Элементы реализуют только IEnumerable, а не IEnumerable<T>. Вы получаете перегрузку AsQueryable (), которая возвращает IQueryable (не универсальный). Который имеет только методы расширения Cast и OfType.

Заклинание предметов от объекта к отделу. Как это:

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

Кстати, вам больше не нужен AsQueryable ().

...