2011-02-15 61 views
0

In this post,Linq to XML查詢結果用迭代器訪問如下。用C#中的[]訪問Linq到XML查詢結果

foreach (var elem in elems) { 
    var res = elem.Elements("ClassKeyName"); 

    foreach (var e in res) { 
     Console.WriteLine(e.Value); 
    } 
} 

我可以用[]來訪問結果嗎?例如,我想用如下,

foreach (var elem in elems) { 
    var res = elem.Elements("ClassKeyName"); 
    Console.WriteLine(res[0].Value); 
} 

不過,我得到這個錯誤信息

xmlparse.cs(18,34): error CS0021: 
Cannot apply indexing with [] to an expression of type 
`System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' 

回答

1

你只需要結果轉換爲可索引類型,如一個列表:

foreach (var elem in elems) { 
    List<XElement> res = elem.Elements("ClassKeyName").ToList(); 
    Console.WriteLine(res[0].Value); 
} 

(您仍然可以使用var如果你想 - 我只是給它一個明確的類型在這種情況下,以使其更清晰。)

1

如果您只需要第一個,您可以res.First().Value。如果你需要第n個元素res.Skip(n - 1).Value(所以第一個元素是res.Skip(0).Value,第二個res.Skip(1).Value ...)。

最大的問題是爲什麼?您想做什麼?

+0

謝謝你讓我知道First(),實際上,這就是我想得到的。但是,ToList()可以正常工作,並且很好地瞭解它。 – prosseek 2011-02-16 17:17:47