Ответ 1
Это потому, что ItemCollection реализует только IEnumerable
, а не IEnumerable<T>
.
Вам нужно эффективно вызвать Cast<T>()
, что и происходит, если вы явно укажете тип переменной диапазона:
var lItem = from object item in lListBox.Items
where String.Compare(item.ToString(), "abc") == 0
select item;
В точечной нотации это:
var lItem = lListBox.Items
.Cast<object>()
.Where(item => String.Compare(item.ToString(), "abc") == 0));
Если курс, если у вас есть лучшее представление о том, что в коллекции, вы можете указать более ограничительный тип, чем object
.