Basic LINQ expression for an ItemCollection

It's because ItemCollection only implements IEnumerable, not IEnumerable<T>.

You need to effectively call Cast<T>() which is what happens if you specify the type of the range variable explicitly:

var lItem = from object item in lListBox.Items
            where String.Compare(item.ToString(), "abc") == 0
            select item;

In dot notation, this is:

var lItem = lListBox.Items
                    .Cast<object>()
                    .Where(item => String.Compare(item.ToString(), "abc") == 0));

If course, if you have a better idea of what's in the collection, you could specify a more restrictive type than object.


You need to specify the type of "item"

var lItem =
    from object item in lListBox.Items
    where String.Compare(item.ToString(), "abc") == true
    select item;