在C#中的大型数据集中合并数据表中的行速度较慢

时间:2016-02-02 10:07:35

标签: c# .net datatable

我有一个数据表,其中包含来自cassandra数据库的统计数据。

通常是很多行(在20k-45k行的区域内)。

行分为几小时,我需要将它们合并为几天。

我现在的代码只需要大约1-3毫秒来处理一行,但如果有45k或更多行,它仍然需要一段时间......

所以我想知道是否有更好的方法 任何想法都会非常感激!

当前代码

Array.prototype.map.call(a,func)

1 个答案:

答案 0 :(得分:0)

好的,我决定调查linq,因为那里有" sql"我需要的功能.. 所以这最终成为我问题的解决方案:

        List<StatsResult> m_results =
                (
                  from row in m_table.AsEnumerable()
                  group row by new {
                      EventTime = row.Field<string>("event_time"),
                      Package = row.Field<string>("package"),
                      Name = row.Field<string>("name"),
                      Country = row.Field<string>("country")
                  } into g
                  select new StatsResult()
                  {
                      event_time = g.Key.EventTime,
                      package = g.Key.Package,
                      name = g.Key.Name,
                      country = g.Key.Country,
                      ActiveUsers = g.Sum(x => x.Field<long>("ActiveUsers")),
                      MonthlyActiveUsers = g.Sum(x => x.Field<long>("MonthlyActiveUsers"))
                  }
                ).ToList();