title: Class and Struct as Projectables
body: <p>Many a times i have to do select required fields from a class as in case of selected desired fields from Table in sql.
  So i was thinking of making my class and struct as Projectables.</p>
  
  <p>Here is what I want to achieve.</p>
  
  <pre><code>public class Email
  {
      public string Subject { get; set; }
      public string To { get; set; }
      public string Cc { get; set; }
      public string Bcc { get; set; }
      public string Body { get; set; }
      public DateTime ReceivedDate { get; set; }
  }
  
  public class EmailProjection
  {
     // instead of this 
  
      //public string Subject { get; set; }
      //public DateTime ReceivedDate { get; set; }
  
      // I want to do this
      Email.Project(Subject,ReceivedDate);
  }
  
  public class EntryPoint
  {
      static void Main()
      {
          var emailList = new List&lt;Email&gt;();
          /* populate  emails here from source*/
  
          // I want to do this
          List&lt;EmailProjection&gt; emailProjectionList = emailList.Project(EmailProjection).ToList();
  
          // rather than 
          List&lt;EmailProjection&gt; emailProjectionList= emailList.Select(email=&gt;new {email.Subject,email.ReceivedDate}).ToList();}
      }
  </code></pre>
  
  <p>Can somebody help me as to how to go about this? Hints?? Is it achievable? </p>