title: how to wrap different LINQ with different return and trace out the latency
body: <p>I may have different public API methods for client to call, In different APIs I may use different Linq to query DB, which may return different type of anonymous list objects. now I simply write a wrapper which take Func> linq as parameter and output IList as return.</p>
  
  <p>In the wrapper I will use stopwatch to log the latency, surely for every linq I will use ToList() as the last step to force linq to execute immediately.</p>
  
  <p>However, in some API I may use the second linq which will join to first return of wrapper, then MSBuild errors a expression tree may not contain a dynamic operation.</p>
  
  <p>I am thinking out create a bunch of intermediate object to cast dynamic as real type object, however this will introduce some code rubbish I think so.</p>
  
  <p>Any suggestions? Thanks in advance!</p>