1

我想在平面文本文件中读/写我的实体,由于数据量巨大,序列化/反序列化不是正确的解决方案。

是否有任何数据提供程序可以处理文本文件数据源(如 csv、...)?

4

4 回答 4

3

您可以将 OleDB 与 Jet-engine 结合使用:

using (var connection = new OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + directoryPath 
    + "\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';"))
using (var command = new OleDbCommand(
    "SELECT * FROM [" + fileName + "]", connection))
{
    connection.Open();
    using (var reader = command.ExecuteReader())
        while (reader.Read())
            ...
}
于 2011-08-22T09:07:55.087 回答
2

您总是可以查看目标文件的 LINQ 提供程序,显然 LINQ to XML 是可用的。快速搜索会产生其他内容,例如LINQ to CSVLINQ to Text

但是,我不知道他们为您所寻找的内容提供了哪些支持,因此您必须查看它们,而不是逐字接受我的回答。

于 2011-08-22T08:52:58.530 回答
0

虽然不是文本文件数据提供者...检查 protobuf - http://code.google.com/p/protobuf-net/
它是专门为使序列化减少时间+空间消耗而编写的...

它的作者在 Stackoverflow 上 - Marc Gravell

于 2011-08-22T09:23:57.057 回答
0

你考虑过使用 SQLite 吗?它应该做你想做的事,并且在很多情况下都非常快。

于 2011-08-22T15:15:25.027 回答