title: Method chaining generic list extensions
body: <p>I have a List of a "complex" type - an object with a few string properties. The List itself is a property of another object and contains objects of a variety of types, as shown in this abbreviated class structure: </p>
  
  <pre><code>Customer {
     public List&lt;Characteristic&gt; Characteristics;
     .
     .
     .
  }
  
  Characteristic {
     public string CharacteristicType;
     public string CharacteristicValue;
  }
  </code></pre>
  
  <p>I'd like to be able to collect a List of the values of a given type of Characteristics for the current Customer, which I can do in a 2-step process as follows:</p>
  
  <pre><code>List&lt;Characteristic&gt; interestCharacteristics = customer.Characteristics.FindAll(
     delegate (Characteristic interest) {
        return interest.CharacteristicType == "Interest";
     }
  );
  
  List&lt;string&gt; interests = interestCharacteristics.ConvertAll&lt;string&gt;(
     delegate (Characteristic interest) {
        return interest.CharacteristicValue;
     }
  );
  </code></pre>
  
  <p>That works fine, but it seems like a long way around.  I'm sure I must be missing a simpler way of getting to this list, either by chaining together the FindAll() and Convert() methods, or something else I'm overlooking entirely.</p>
  
  <p>For background, I'm working in .Net 2.0, so I'm limited to the .Net 2 generics, and the Characteristic class is an external dependency - I can't change it's structure to simplify it, and there are other aspects of the class that are important, just not in relations to this problem.</p>
  
  <p>Any pointers or additional reading welcomed.</p>