我正在读取文件。var 包含大约 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);
您似乎使用Capacity
而不是Count
来检索var
中的项目数:
int size = var.ToList().Capacity;
这很可能是错误的(请参阅 MSDN(:
容量是 List 在需要调整大小之前可以存储的元素数,而 Count 是列表中实际存在的元素数。