合理数量的List <string>元素?

use*_*445 1 c# sql generics list

我知道可以添加到List的项目数量有限制(基本上是int.MaxValue),但在日常场景中使用的合理数量是多少--100k,500k,100万?

我正在使用DataReader并一次向List添加一个字符串,然后将这些元素作为批处理.我想通过使批量过大来确保我不会过多地限制内存限制.

Ric*_*der 6

另一种方法是返回IEnumerable(而不是List)并使用yield关键字.这不会消耗列表的额外内存.

public IEnumerable<string> MyBigList(DataReader reader)
{
    while (reader.Read())
    {
       yield return (string) reader["SomeField"];
    }
}
Run Code Online (Sandbox Code Playgroud)

在过去,这被称为共同例程,在C#中它被称为迭代器.有关迭代器和更多信息,请参阅MSDNyield.

处理字符串

foreach (var s in MyBigList(reader))
{
   // do something with s
}
Run Code Online (Sandbox Code Playgroud)