RadComboBoxItemCollection реализует неуниверсальный интерфейс IEnumerable (вместо того, чтобы делать разумные вещи и реализовывать IEnumerable ), поэтому ваши стандартные операции LINQ не будут работать. Сначала вы должны будете использовать метод расширения «Cast»:
var result = myList.Items.Cast<RadComboBoxItem>();
Теперь у вас есть гораздо более полезный IEnumerable , с которым вы можете делать все виды замечательных вещей:
public static bool ContainsValue(this RadComboBoxItemCollection myList, string value)
{
return myList.Items.Cast<RadComboBoxItem>().Count(item => item.Value.Equals(value, StringComparison.Ordinal)) > 0;
}
Однако, кто-то с большим опытом, чем я, мог бы, вероятно, говорить об эффективности этого подхода; для производительности было бы лучше просто сделать это старым (до LINQ) способом, а не приводить каждый объект к RadComboBoxItem:
public static bool ContainsValue(this RadComboBoxItemCollection myList, string value)
{
foreach (var item in myList)
if (item.Value.Equals(value, StringComparison.Ordinal))
return true;
return false
}