title: List<object>.RemoveAll - How to create an appropriate Predicate
body: <p>This is a bit of noob question - I'm still fairly new to C# and generics and completely new to predicates, delegates and lambda expressions...</p>
  
  <p>I have a class 'Enquiries' which contains a generic list of another class called 'Vehicles'. I'm building up the code to add/edit/delete Vehicles from the parent Enquiry. And at the moment, I'm specifically looking at deletions.</p>
  
  <p>From what I've read so far, it appears that I can use Vehicles.RemoveAll() to delete an item with a particular VehicleID or all items with a particular EnquiryID. My problem is understanding how to feed .RemoveAll the right predicate - the examples I have seen are too simplistic (or perhaps I am too simplistic given my lack of knowledge of predicates, delegates and lambda expressions).</p>
  
  <p>So if I had a <code>List&lt;Of Vehicle&gt; Vehicles</code> where each Vehicle had an <code>EnquiryID</code>, how would I use <code>Vehicles.RemoveAll()</code> to remove all vehicles for a given EnquiryID?</p>
  
  <p>I understand there are several approaches to this so I'd be keen to hear the differences between approaches - as much as I need to get something working, this is also a learning exercise.</p>
  
  <p>As an supplementary question, is a Generic list the best repository for these objects? My first inclination was towards a Collection, but it appears I am out of date. Certainly Generics seem to be preferred, but I'm curious as to other alternatives.</p>