Запросите элемент управления winforms с CheckedListBoxItemCollection.AsQueryable().Provider.CreateQuery(
Мне нужно запросить элемент управления winforms (CheckedListBoxControl), имеющий CheckedListBoxItemCollection, который я хочу запросить для определенного идентификатора, который находится в свойстве "Значение" 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 ответ
CheckListBox.Items реализует только IEnumerable, а не IEnumerable<T>
, Вы получаете перегрузку AsQueryable(), которая возвращает IQueryable (не универсальную). Который имеет только методы расширения Cast и OfType.
Отбросьте предметы обратно с объекта в отдел. Как это:
var q = checkedListBox1.Items.Cast<Department>().AsQueryable().Where((d) => d.Id == 1);
Вам больше не нужен AsQueryable(), кстати.