title: Concatenating Lambda Functions in C#
body: <p>Using C# 3.5 I wanted to build up a predicate to send to a where clause piece by piece.  I have created a very simple Console Application to illustrate the solution that I arrived at. This works perfectly.  Absolutely perfectly.  But I have NO idea how or why.</p>
  
  <pre><code>    public static Func&lt;Tran, bool&gt; GetPredicate()
      {
          Func&lt;Tran, bool&gt; predicate = null;
          predicate += t =&gt; t.Response == "00";
          predicate += t =&gt; t.Amount &lt; 100;
          return predicate;
      }
  </code></pre>
  
  <p>When I say 'predicate +=', what does that mean?  predicate -= appears to do nothing and ^=, &amp;=, *=, /= aren't liked by the compiler.</p>
  
  <p>The compiler doesn't like 'predicate = predicate + t => t.Response....' either.</p>
  
  <p>What have I stumbled on? I know what it does, but how does it do it?</p>
  
  <p>If anyone wants to go delve into more complicated lambda's, please do so.</p>