在内存中存储大量文本

时间:2009-12-23 16:00:34

标签: c# linq search text

如果您需要能够在内存中存储大量纯文本以便对其进行搜索和编辑,您会使用哪种数据类型?

假设我将10000行文档加载到我的C#应用​​程序中以便使用LINQ进行搜索,您将如何在内存中表示它?

不是字符串,因为它是可变的,字符串是不可变的。

4 个答案:

答案 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使用堆进行内存分配,这可能会导致运行时出现内存不足的异常。

由于

相关问题