迭代时对数据行进行分组

时间:2011-02-01 22:32:53

标签: c# iterator

我正在开发一个解析数据文件的应用程序。由于它是大文件,因此不适合加载到内存中。所以我迭代数据文件。但数据文件的结构类似于

1. master data line1
2. master data line2
3. detail data line2-1
4. detail data line2-2
5. master data line3
6. master data line4
7. detail data line4-1
8. detail data line4-2
9. detail data line4-3
10.  ......

我需要将相关数据线组合在一起,然后将一个事务发送到数据库。以前有人有过类似的问题吗?有更好的方法吗?

谢谢,

2 个答案:

答案 0 :(得分:0)

窥探下一行;如果它是主人像往常一样继续进行,如果是细节,则追加该行并查看下一行。

答案 1 :(得分:0)

在一个组中使用以下过程将一堆相关记录放在一起。它也不会立即将整个文件加载到内存中。

List<string> collection = new List<string>();

foreach( var line in File.ReadLines("file.txt") )
{
     if( line.StartsWith("master"))
     {
        if( collection.Count > 0 )
        {
             WriteRecords(collection);
        }
        collection.Clear();
     }
     collection.Add(line);
}