根据
this post数组(在我的示例中)可以容纳的最大元素数是2 146 435 071。
我想将一个字符串拆分成一个列表,但这些元素可能超过10 000 000 000,因此这可能意味着不使用Split方法,但是如果仍然可以使用它也没关系。
我怎样才能以最佳性能做到这一点?
在进行任何更改之前,这是我的代码:
var allTokens = allText.Split(Delimiters).ToList();
allText值的示例:
fgfg,ghgh,"gjhj
hghdg,hjhgj",ghg
ghgh,kiwj,fhgfg,
hsk,,jw,"address line1
adrress line 2
zip code
country"
问题:大文件抛出OutOfMemoryException
答案 0 :(得分:0)
要解决这个问题,我有以下伪代码:
[1]检查allText是否很大(长度大于某个值 - 取决于字符串中分隔符的预期频率)
的所有字符串[]的addRange
[2]重复:如果足够大,将allText分成两个字符串
[3]使用Split方法拆分生成的多个字符串(或者allText很小) [4]初始化清单
[5]来自[3]
这是@Sach对问题的评论