Как я могу получить список <int>из LINQ to XML, который создает список <List <int>>? - PullRequest
2 голосов
/ 29 апреля 2010

У меня есть следующий фрагмент XML:

<PerformancePanel>
    <LegalText>
        <Line id="300" />
        <Line id="304" />
        <Line id="278" />
    </LegalText>
</PerformancePanel>

Я использую следующий код для получения объекта:

var performancePanels = new
{
    Panels = (from panel in doc.Elements("PerformancePanel")
              select new
              {
                  LegalTextIds = (from legalText in panel.Elements("LegalText").Elements("Line")
                                  select new List<int>()
                                  {
                                      (int)legalText.Attribute("id")
                                  }).ToList()
               }).ToList()
};

Тип LegalTextIds равен List<List<int>>. Как я могу получить это как List<int>?

Ответы [ 3 ]

4 голосов
/ 29 апреля 2010

Не создавайте новый список для каждого элемента, просто создайте один список:

LegalTextIds = (from legalText in panel.Elements("LegalText").Elements("Line")
                select (int)legalText.Attribute("id")).ToList()
1 голос
/ 29 апреля 2010

Используйте метод расширения SelectMany:

List<List<int>> lists = new List<List<int>>()
    { 
        new List<int>(){1, 2},
        new List<int>(){3, 4}
    };

var result = lists.SelectMany(x => x);  // results in 1, 2, 3, 4

Или, для вашего конкретного случая:

var performancePanels = new
{
    Panels = (from panel in doc.Elements("PerformancePanel")
            select new
            {
                LegalTextIds = (from legalText in panel.Elements("LegalText").Elements("Line")
                             select new List<int>()
                             {
                                 (int)legalText.Attribute("id")
                             }).SelectMany(x => x)
            }).ToList()
};
0 голосов
/ 29 апреля 2010

Как насчет этого

List<int> GenListOfIntegers = 
          (from panel in doc.Elements("PerformancePanel").Elements("Line")
              select int.Parse(panel.Attribute("id").Value)).ToList<int>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...