title: Selecting all 12 month datetimes for a given year
body: <p>I'm selecting an <code>IEnumerable</code> of <code>DateTime</code> by using a list of <code>int</code> which represent a year.</p>
  <p>Each of the resulting <code>DateTime</code>s is given a default month and day of <code>1</code> so e.g.</p>
  <pre><code>List&lt;int&gt; years = new List&lt;int&gt;() { 2018, 2017, 2016 };
  var dateTimes = years.Select(x =&gt; new DateTime(int.Parse(x), 1, 1));
  </code></pre>
  <p>Gives me <code>2018/01/01</code>, <code>2017/01/01</code>, <code>2016/01/01</code> (ignoring the time component)</p>
  <p>I want to get the same results but for each <em>month</em> of each year too, so actually 36 results for three given years:</p>
  <pre><code>2018/01/01
  2018/02/01
  ... 
  2018/11/01
  2018/12/01
  2017/01/01
  ...
  2016/12/01
  </code></pre>
  <p>(this is using non-US culture datetime where months are the middle value)</p>
  <p>I was wondering if C# had a really nice shortcut like the range notation</p>
  <pre><code>var dateTimes = years.Select(x =&gt; new DateTime(int.Parse(x), 1..12, 1));
  </code></pre>
  <p>But that certainly doesn't work.</p>
  <p>Any syntactic-shortcut way to achieve this without just looping <code>i = 1 to 12</code> style?</p>
  <p>The best I came up with was:</p>
  <pre><code>var dateTimes = new List&lt;DateTime&gt;();
  foreach(var y in years)
  {
      for (int i = 1; i &lt;= 12; i++) dateTimes.Add(new DateTime(int.Parse(y), i, 1));
  }
  </code></pre>
  <p>Which does exactly what I want but though there was a more succinct way to write.</p>