Method to return a collection of objects, filtered by a string
I'll ignore your naming conventions/etc as I know that's not what you're asking about.

Since the VehicleCollection object already inherits from IEnumerable through the List&lt;> inheritence, you can query the collection as a list through the 'this' keyword.

That means you could write up your search method like:

public VehicleCollection GetVehicles(string searchTerm = "")
{
    // Null and white-space check for sanity
    if(string.IsNullOrWhiteSpace(searchTerm))
    // We're assuming if the search term is bad, we return everything. 
    // This isn't standard practice - usually we return nothing
        return this; 

    var matches = new VehicleCollection();
    matches.AddRange(
        this.Where(v=&gt;v.ID.Equals(searchTerm) || 
                    v.Make.Equals(searchTerm) || 
                    v.Model.Equals(searchTerm)
    // I personally prefer to be explicit in what I'm selecting, but it's your choice
        ).Select(v=&gt;v)); 

    // inline IF because I'm lazy
    // again, we're returning everything if there are no matches, 
    // which isn't standard practice.
    return matches.Any()? matches: this; 
}


Hope that helps!