如果您需要能够在内存中存储大量纯文本以便对其进行搜索和编辑,您会使用哪种数据类型?
假设我将10000行文档加载到我的C#应用程序中以便使用LINQ进行搜索,您将如何在内存中表示它?
不是字符串,因为它是可变的,字符串是不可变的。
答案 0 :(得分:2)
您始终可以使用MemoryStream,然后使用StreamReader从内存中读取数据。
您可能会从以下链接中获得一些提升,该链接讨论了如何将LINQ与StreamReader配合使用。我不确定它是否恰好适合你想要做的事情。
http://blogs.msdn.com/ericwhite/archive/2006/08/31/linq-to-text-files.aspx
来自博文:
StreamReader sr = new StreamReader("TextFile.txt");
var t1 =
from line in sr.Lines()
let items = line.Split(',')
where ! line.StartsWith("#")
select String.Format("{0}{1}{2}",
items[1].PadRight(16),
items[2].PadRight(16),
items[3].PadRight(16));
var t2 =
from line in t1
select line.ToUpper();
foreach (var t in t2)
Console.WriteLine(t);
sr.Close();
您希望将StreamReader实例化更改为
StreamReader sr = new StreamReader(myMemoryStreamVar)
或类似的东西。
答案 1 :(得分:2)
Stringbuilder适合。在内部它是一个缓冲区,并且是可变的。
答案 2 :(得分:2)
尝试使用内存映射文件。它是.net 4.0中的新BCL。
这是链接。 http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(VS.100).aspx
由于
答案 3 :(得分:0)
StringBuilder使用堆进行内存分配,这可能会导致运行时出现内存不足的异常。
由于