2013-02-28 2 views
0

Я использую linq-код для разбора XML-файла. Это мой код. Я хочу, чтобы детали привязки и изображение были перечислены.Извлечь данные из изображений из списка

var query = from l in xmlDoc.Descendants("Person") 
      from detail in l.Descendants("Details") 
      select new Notch 
      { 
       name = (string)l.Attribute("name").Value, 
       detail= l.Element("detail").Select(a => (string)a.Attribute("detailName")).ToList(), 
       Image = l.Element("detail").Elements("event_image").Select(x => (string)x.Attribute("url")).ToString() 
      }; 

foreach (var result in query) 
{ 
    foreach (var detail in result.detail) 
    { 
      Console.WriteLine(detail); 
    } 
} 

Я пробовал этот код, но я получил выход, как показано ниже .. но я хочу, чтобы детали и изображения были перечислены.

Raja 

    System.Collection.Generic.List'1[string.system] 

    Rama 

    System.Collection.Generic.List'1[string.system] 

ответ

0

Проблема в том, что вы получаете список строк, а не уникальный. Попробуйте этот код, чтобы присоединиться к каждой строки с новой строки и быть в состоянии напечатать его правильно:

detail = string.Join(System.Environment.NewLine, l.Element("detail").Select(a => (string)a.Attribute("detailName"))) 

Полный код:

var query = from l in xmlDoc.Descendants("Person") 
      from detail in l.Descendants("Details") 
      select new Notch 
      { 
       name = (string)l.Attribute("name").Value, 
       detail= string.Join(System.Environment.NewLine, l.Element("detail").Select(a => (string)a.Attribute("detailName"))), 
       Image = l.Element("detail").Elements("event_image").Select(x => (string)x.Attribute("url")).ToString() 
      }; 

foreach (var result in query) 
{ 
    foreach (var detail in result.detail) 
    { 
      Console.WriteLine(detail); 
    } 
} 
+0

Привет благодаря переигрывать я надеюсь, что ваш ответ, но я буду получать некоторая ошибка – user123

+0

Привет, я получил ошибку, как Лучшее перегруженное соответствие метода для 'string.Join (string, string [])' имеет некоторые недопустимые аргументы – user123

+0

попытайтесь преобразовать внутренний выбор в массив: detail = string.Join (System.Environment. NewLine, l.Element ("detail"). Выберите (a => (string) a.Attribute ("detailName"). ToArray())) – sesispla

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