Получить текущий перечислитель (итератор?) В запросе LINQ. Как текущий индекс в циклах for

Возможно ли получить текущий перечислитель (... или итератор? Не знаю, какой термин правильный) в запросе LINQ?

Например, я пытаюсь создать вывод XML (через LINQ to XML) всех загруженных в данный момент сборок.

Dim xmldoc As XDocument = New XDocument(
        New XElement("Types",
        Assembly.GetExecutingAssembly().GetReferencedAssemblies() _
                .Select(Function(name) Assembly.Load(name)) _
                .SelectMany(Function(assembly) assembly.GetTypes()) _
                .Select(Function(type) New XElement("Type", type.FullName))))

Вывод выглядит так.

<Types>
  <Type>System.Object</Type>
  <Type>FXAssembly</Type>
  <Type>ThisAssembly</Type>
  <Type>AssemblyRef</Type>
  <Type>System.Runtime.Serialization.ISerializable</Type>
  <Type>System.Runtime.InteropServices._Exception</Type>
  .....
</Types>

Можно ли каким-то образом получить текущий «индекс» (счетчик?) Из LINQ's Selects? Я хотел бы использовать его в XML

<Types>
  <Type ID="1">System.Object</Type>
  <Type ID="2">FXAssembly</Type>
  <Type ID="3">ThisAssembly</Type>
  <Type ID="4">AssemblyRef</Type>
  <Type ID="or-some-other-unique-id-#5">System.Runtime.Serialization.ISerializable</Type>
      .....
</Types>
6
задан V-Light 20 September 2011 в 20:08
поделиться