title: C# equivalent of Scala List's Zip with Index?
body: <p>Using C#, how can I convert/iterate a List/Array/Dictionary to a collection which can easily output it's index?</p>
  
  <p>E.g. in Scala I'd use .zipWithIndex in order to convert a list of [a,b,c] to a list of [(a, 0), (b, 1), (c, 2)]</p>
  
  <p>Is there an 'easy' way of doing this with inbuilt .net methods? Via LINQ or otherwise?</p>
  
  <p>Or do I have to use an external functional library, or code my own extension method?</p>
  
  <p>From their docs:</p>
  
  <p><a href="http://www.scala-lang.org/api/2.12.1/scala/collection/immutable/List.html#zipWithIndex:List[(A,Int)]" rel="noreferrer">http://www.scala-lang.org/api/2.12.1/scala/collection/immutable/List.html#zipWithIndex:List[(A,Int)]</a></p>
  
  <blockquote>
    <p>Example:
    List("a", "b", "c").zipWithIndex = List(("a", 0), ("b", 1), ("c", 2))</p>
  </blockquote>