遍历数据视图性能低下

Iterate through dataview slow performance

我有一个数据表,其中包含像

这样的行

123, 1, ABC, 2, 21.50, 36.33

123, 1, ABC, 2, 22.67, 0.00

456, 1, ABC, 2, 101.02, 53.92

456、1、ABC、2、0.00、0.00 ...

我想遍历数据表并处理每个 ID(第 1 列)。

下面的代码工作正常,但速度很慢。 迭代 200,000 行需要 15 分钟。有没有办法提高性能?

if (dt.Rows.Count > 0)
{
   DataView distinctDv = new DataView(dt);
   DataTable distinctDt = distinctDv.ToTable(true, "ID");

   foreach (DataRow distinctRow in distinctDt.Rows)
   {
      DataView dv = DataView(dt);
      dv.RowFilter = "ID = " + distinctRow["ID"];

      foreach (DataRowView drv in dv)
      {
         //Logic
      }
}

您可以使用 LINQ 按 ID 对行进行分组,这应该只循环一次数据表,而不是您的 RowFilter 解决方案可能正在执行的每个键一次(原谅我的 C#,我一直在 VB.NET着陆太久了!):

var grouped = (
    from row in dt.AsEnumerable()
    group row by row.Field<int>("ID") into g
    select g
);

foreach (var grp in grouped)
{
    Console.WriteLine("ID = {0}", grp.Key);
    foreach (var row in grp)
    {
        // Logic - row will be the DataRow
    }
}