title: When is this LINQ query executed?
body: <pre><code>public class TestClass
  {
      public TestClass(int id, string name)
      {
          Name = name;
          Id = id;
      }
      public string Name
      { get; private set; }
  
      public int Id
      { get; private set; }
  
      public string Tag
      { get; set; }
  
      public DateTime Time
      { get; set; }
  }
  
   private static void Main(string[] args)
      {
          List&lt;TestClass&gt; list = new List&lt;TestClass&gt;();
  
          for (int i = 0; i &lt; 5; i++ )
          {
              TestClass t = new TestClass(i, Guid.NewGuid().ToString());
              t.Tag = i%2 == 0?"Hello":"World";
              list.Add(t);
          }
  
          var query = list
              .GroupBy(l=&gt;l.Tag);
  
          Func&lt;IEnumerable&lt;IGrouping&lt;string, TestClass&gt;&gt;, int[]&gt; func = GetIds&lt;string,TestClass&gt;;
  
          func.BeginInvoke(query, null, null);
  
          Console.Read();
      }
  
      private static int[] GetIds&lt;T, U&gt;(IEnumerable&lt;IGrouping&lt;T, U&gt;&gt; query)
      {
          List&lt;int&gt; ints = new List&lt;int&gt;();
  
          foreach(var y in query)
              ints.Add(y.Count());
  
          return ints.ToArray();
      }
  }
  </code></pre>
  
  <p>I know LINQ doesnt execute until the collection is iterated, but i just want to make sure that I can assume that it still holds true even if the query is passed to another method async.</p>