Linq запрос конвертировать в список <string> - PullRequest
5 голосов
/ 15 февраля 2011

У меня есть этот код

List<string> IDs = new List<string>();
    XDocument doc = XDocument.Parse(xmlFile);
    var query = from c in doc.Root.Elements("a").Elements("b")
        select new { ID = c.Element("val").Value};

Как я могу преобразовать запрос в список без цикла foreach?

{ ID = c.Element("val")}

строки конечно

РЕДАКТИРОВАТЬ

мой XML-файл

<?xml version="1.0" encoding="utf-8"?>
<aBase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <a>
    <b>
      <val>other data</val>
    </b>
    <b>

      <val>other data</val>
    </b>
  </a>
</aBase>

Ответы [ 2 ]

13 голосов
/ 15 февраля 2011
IDs = query.Select(a  => a.ID).ToList();

или если вы хотите сделать это в одну строку

List<string> IDs = (from c in doc.Root.Elements("a").Elements("b")
        select c.Element("val").Value).ToList()
4 голосов
/ 15 февраля 2011

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

XDocument doc = XDocument.Parse(xmlFile);
var query = from c in doc.Root.Elements("a").Elements("b")
            select c.Element("val").Value;

var IDs = query.ToList();

Лично я бы просто использовал метод-синтаксис полностью:

var IDs = doc.Root.Elements("a")
                  .Elements("b")
                  .Select(c => c.Element("val").Value)
                  .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...