2012-03-06 4 views
4

Я делаю следующий запрос на XDocument. Последний уровень .Descendants("Instance") дает список XElements вида:Разбор XDocument с использованием LINQ

<Instance>filepath1</Instance> 
<Instance>filepath2</Instance> 
<Instance>filepath3</Instance> 
<Instance>filepath4</Instance> 

Запрос

List<string> fileNames = xDoc.Descendants("Main") 
         .FirstOrDefault() 
         .Descendants("SecondLevel") 
         .FirstOrDefault() 
         .Descendants("Instance") 
         .Select().ToList(); //this line is not correct. Need to get the instances node values as List<string> 

Как я могу хранить ценности filepath1, filepath2 .. в List<string>?

+1

Что-то вроде 'Select (х => x.Value)'? –

ответ

6

Используя

.... 
    .Descendants("Instance") 
    .Select(e => e.Value) // project to the string values 
    .ToList(); 
+0

Спасибо, это сработало. Простите мое невежество, что это за синтаксис. Это похоже на создание анонимных функций с помощью выражений Lamda. – Nemo

+0

Что мне нужно для чтения, чтобы понять это. – Nemo

+1

Это выражение лямбда. Он преобразует найденные XElements в их строковые значения. Прочитайте основные LINQ, любой учебник будет делать. –

Смежные вопросы