title: How does LINQ's "Where" method works?
body: <p>Exactly how LINQ's "where" method is defined? I'm guessing implementation is something like this:</p>
  
  <pre><code>public static IEnumerable&lt;T&gt; Where ( this partialParent, Func&lt;bla,bla&gt; myDelegate ) 
  </code></pre>
  
  <p>Now if I invoke Where method like this:</p>
  
  <pre><code>from c in context.Con
  where ( c.Col1 == c.Col2 )
  select c
  </code></pre>
  
  <p>I'm guessing <code>"c.Col1 == c.Col2"</code> is passed down and some <code>foreach</code> loop does the checking. But what is going on when I invoke where like this:</p>
  
  <pre><code>where ( c.Col1 == c.Col2 || c.Col3 == c.Col4 )
  </code></pre>
  
  <p>Does the two "checks" are passed down as a whole expression? Maybe I'm missing something very simple.</p>