2010-09-20 70 views
2

我有一個Car對象數組,並使用下面的代碼片段從這些對象創建一個XML文檔。我設置了一個計數器變量i,以便能夠爲文檔中的Car元素編制索引。有沒有獲得當前處理元素的索引的不同方式?LINQ to XML - 如何獲得索引

 int i = 0; 
     XDocument doc = 
      new XDocument(
       new XElement(
        "Inventory", 
        from car in cars 
        select 
         new XElement("Car", 
          new XAttribute("ID", ++i), //<<== index here 
          new XElement("Color", car.Color), 
          new XElement("Make", car.Make), 
          new XElement("PetName", car.PetName) 
         ) 
       ) 
      ); 

我所採取的方法工作得很好,我只是想知道是否有一個神奇的詞或擴展方法,將產生的指數沒有我的遞增計數器變量?

回答

4

是 - 不使用查詢表達式;使用overload of Select which provides an index。這將替換查詢表達式:

cars.Select((car, index) => 
    new XElement("Car", 
     new XAttribute("ID", index), 
     new XElement("Color", car.Color), 
     new XElement("Make", car.Make), 
     new XElement("PetName", car.PetName) 
    )) 

有未在查詢表達式支持的各種重載 - 這是絕對值得熟悉這兩個「點號」(或任何你想將它命名)和查詢表達式。