I have an ItemCollection that I'd like to query using LINQ. I tried the following (contrived) example:
var lItem =
from item in lListBox.Items
where String.Compare(item.ToString(), "abc") == true
select item;
Visual Studio keeps telling me Cannot find an implementation of the query pattern for source type 'System.Windows.Controls.ItemCollection'. 'Where' not found. Consider explicitly specifying the type of the range variable 'item'.
How do I fix the problem?
It's because ItemCollection only implements
IEnumerable, notIEnumerable<T>.You need to effectively call
Cast<T>()which is what happens if you specify the type of the range variable explicitly:In dot notation, this is:
If course, if you have a better idea of what's in the collection, you could specify a more restrictive type than
object.