Доступ к результатам запроса Linq to XML с помощью [] в C # - PullRequest
0 голосов
/ 16 февраля 2011

В этом посте результат запроса 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 ]

1 голос
/ 16 февраля 2011

Если вам нужно только первое, вы можете res.First().Value.Если вам нужен n-й элемент res.Skip(n - 1).Value (поэтому первый элемент res.Skip(0).Value, второй res.Skip(1).Value ...).

Большой вопрос - ПОЧЕМУ?Что вы хотите сделать?

1 голос
/ 16 февраля 2011

Вам просто нужно преобразовать результаты в индексируемый тип, такой как список:

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

(Вы все еще можете использовать var, если хотите - я только что дал емуявный тип, чтобы сделать его более понятным в этом случае.)

...