Превышен размер списка, и я теряю элементы при вызове ToList () в C #, LINQ - PullRequest
0 голосов
/ 06 июля 2018

Я читаю из файла. Вар содержит около 512 объектов. Когда я использую ToList (), я получаю только 438. Это в основном размер по умолчанию для списка. Я пытался увеличить его до 512, и это сработало, но когда я звоню ToList (), я получаю снова 438. Если кто-нибудь может помочь мне с этим. Если я сломаю if и получу напечатать, например, 200 объектов, я получу первые объекты, которые не появляются, когда я не ломаюсь. Я теряю записи из-за размера по умолчанию.

Есть ли способ изменить это при вызове ToList ()?

XDocument doc = XDocument.Load("file.xml");

        var var = from elem in doc.Descendants("Groups").Elements()
                  select new Group
                  {
                      x1 = elem.Element("x1") != null ? elem.Element("x1").Value : String.Empty,
                      x2 = elem.Element("x2") != null ? elem.Element("x2").Value : String.Empty,
                      x3 = elem.Element("x3") != null ? elem.Element("x3").Value : String.Empty,
                      x4 = elem.Element("x4") != null ? elem.Element("x4").Value : String.Empty,
                      x5 = elem.Element("x5") != null ? elem.Element("x5").Value : String.Empty,
                      x6 = elem.Element("x6") != null ? elem.Element("x6").Value : String.Empty,
                      x7 = elem.Element("x7") != null ? elem.Element("x7").Value : String.Empty
                  };
        int size = var.ToList().Capacity;
        Console.WriteLine(size);

        List<Group> list = new List<Group>(size);



        list = var.ToList();


        int i = 0;
        foreach (Group ins in list)
        {
            i++;
            Console.WriteLine(ins.ToString());
        }
        Console.WriteLine(i);

1 Ответ

0 голосов
/ 06 июля 2018

Вы, похоже, используете Capacity вместо Count для получения количества элементов в var:

int size = var.ToList().Capacity;

Скорее всего, это неправильно (см. MSDN ):

Емкость - это количество элементов, которые Список может сохранить до того, как потребуется изменение размера, тогда как Количество - это количество элементов, которые фактически находятся в Списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...