使用C#中的[]访问Linq到XML查询结果

时间:2011-02-15 21:07:53

标签: c# xml linq-to-xml

In this post,使用迭代器访问Linq to 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>'

2 个答案:

答案 0 :(得分:1)

您只需将结果转换为可索引类型,例如列表:

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

(如果你愿意的话,你仍然可以使用var - 我只是给它一个明确的类型,以便在这种情况下更清楚。)

答案 1 :(得分:1)

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

最大的问题是为什么?你想做什么?