title: How can I combine multiple refactored Select expressions in Linq (to EF or SQL)?
body: <p>Say I have this view model:</p>
  
  <pre><code>public class SeriesLinkViewModel
  {
      public static Expression&lt;Func&lt;Series, SeriesLinkViewModel&gt;&gt; FromSeries =
          s =&gt; new SeriesLinkViewModel
          {
              Name = s.Name,
              Slug = s.Slug,
          };
  
      public string Name { get; set; }
      public string Slug { get; set; }
  }
  </code></pre>
  
  <p>I stuck the projection function in there for convenience, so now I can say something like:</p>
  
  <pre><code>var links = dc.Series.Select(SeriesLinkViewModel.FromSeries);
  </code></pre>
  
  <p>Awesome. But what do I do if I wanted to add to this query? Say I wanted to also pull a <code>Description</code> column from the table. Normally, I could just do a <code>select new { }</code> and put <code>Description</code> in there, but I can't quite do that because I can only put one projection function in `.Select() .</p>
  
  <p>I was hoping I could do something like this:</p>
  
  <pre><code>q = from s in dc.Series
      select new
      {
          Series = SeriesLinkViewModel.FromSeries.Compile()(s),
          Description = s.Description
      };
  </code></pre>
  
  <p>But I get an exception:</p>
  
  <blockquote>
    <p>System.InvalidCastException: Unable to
    cast object of type
    'System.Linq.Expressions.FieldExpression'
    to type
    'System.Linq.Expressions.LambdaExpression'.</p>
  </blockquote>
  
  <p>Or could I at least have all these queries done in one round trip somehow? I know TransactionScope works for making changes, but I don't think it causes queries to be done all at once.</p>