title: Can I write this lambda with IEnumerable<T> rather than IEnumerable<string>?
body: <p>Is it possible to write this lambda in a more generic way? It works fine, but seems too specifically typed; the content of the <code>IEnumerable</code>s are not touched, but should be preserved in the return type.</p>
  
  <pre><code>static readonly Func&lt;
      (IEnumerable&lt;string&gt;, IEnumerable&lt;string&gt;),
      (IEnumerable&lt;string&gt;, IEnumerable&lt;string&gt;),
      (IEnumerable&lt;string&gt;, IEnumerable&lt;string&gt;)
  &gt; JoinListTuples = (a, b) =&gt;
      (a.Item1.Concat(b.Item1),
          b.Item2.Concat(b.Item2));
  </code></pre>
  
  <p>I was thinking of something like this, but it doesn't compile: </p>
  
  <pre><code>static readonly Func&lt;
      (IEnumerable&lt;T&gt;, IEnumerable&lt;U&gt;),
      (IEnumerable&lt;T&gt;, IEnumerable&lt;U&gt;),
      (IEnumerable&lt;T&gt;, IEnumerable&lt;U&gt;)
  &gt; JoinListTuples = (a, b) =&gt;
      (a.Item1.Concat(b.Item1),
          b.Item2.Concat(b.Item2));
  </code></pre>