有效地将大对象列表与csv头映射匹配

时间:2014-05-06 06:15:34

标签: c# performance algorithm dataset bigdata

我正在处理大量数据对象,我需要能够根据csv标头映射将它们转换为文本文件。标题映射基本上是需要以该特定顺序打印出的字段列表,例如如果标题映射是:ID,Name,Location等,则需要将所有对象的这三个字段写入csv文件。

问题在于对象列表可以是数百万,而标题映射中可以有数百个字段名 - 这些字段中的字段名始终是有效的字段名。目前,我正在使用的代码遍历整个对象列表,并在所有csv值的映射上使用switch语句来打印出所需的字段。代码如下所示:

foreach (Object o in Objects)
{
    foreach (String FieldName in CsvFieldsList)
    {
        switch (FieldName)
        {
              case "ID":
                 //Do something for this specific ID:
                 outString.Append(o.ID);
                 break;
                 ....
                 ....
        }

    }

}

AFAIK,C#将使用字典用于字符串切换语句,所以这些应该很快,但是,这些代码需要花费数小时来处理我们的一些大数据集,并且我想知道是否可以改进这个设计。

1 个答案:

答案 0 :(得分:0)

你可以尝试一些parellel方法吗?例如,将对象拆分为一些小对象,然后在单独的线程或进程中处理每个小对象。每个线程或进程编写一个csv文件,在完成所有线程或进程后,将这些csv文件组合在一起。