【问题标题】:PLINQ AsParallel error with datatable数据表的 PLINQ AsParallel 错误
【发布时间】:2015-12-21 07:24:55
【问题描述】:

我正在尝试将AsParallel 与数据表一起使用

using System.Linq;


var row = from r0w1 in dt.AsEnumerable().AsParallel()
          join r0w2 in curdt.AsEnumerable().AsParallel()
          on r0w1.Field<string>("B") equals r0w2.Field<string>("cr_B")
          join r0w3 in tbmdt.AsEnumerable().AsParallel()
          on r0w1.Field<string>("B") equals r0w3.Field<string>("tb_B") into ps
          from r0w3 in ps.DefaultIfEmpty()
          select new string[] { serial_number++.ToString() }
          .Concat(r0w1.ItemArray.Concat
          (r0w2 != null ? r0w2.ItemArray.Skip(1) : new object[] { "", "", "", "" })
          .Concat(r0w3 != null ? r0w3.ItemArray.Skip(1) : new object[] { "", "", "", "" })).ToArray();

但我在这里遇到错误

system.data.enumerablerowcollection<system.data.datarow> does not contain a definition for 'Asparallel'

我正在使用 Visual Studio 2008。为此我需要任何额外的库吗?

【问题讨论】:

    标签: c# linq plinq


    【解决方案1】:

    在内部语句中使用 AsParallel 是个坏主意。您不会加快数据库查询速度。

    如果需要操作集合,放在最后:

    var row = from r0w1 in dt
              join r0w2 in curdt
              on r0w1.Field<string>("B") equals r0w2.Field<string>("cr_B")
              join r0w3 in tbmdt.AsEnumerable().AsParallel()
              on r0w1.Field<string>("B") equals r0w3.Field<string>("tb_B") into ps
              from r0w3 in ps.DefaultIfEmpty()
              select new string[] { serial_number++.ToString() }
              .Concat(r0w1.ItemArray.Concat
              (r0w2 != null ? r0w2.ItemArray.Skip(1) : new object[] { "", "", "", "" })
              .Concat(r0w3 != null ? r0w3.ItemArray.Skip(1) : new object[] { "", "", "", "" })).AsParallel();
    

    【讨论】:

    • 感谢您的回复。正如我在问题中提到的,由于错误,我什至不能使用AsParallel
    【解决方案2】:

    您不能在 DataRow 类上使用 AsParallel(或据我所知的任何 linq 扩展方法)。您可以在 DataTable 上使用它,然后只需使用 DataTable.Rows

    同样使用 AsParallel 在您的情况下不会真正做任何事情,只有当您需要同时查询集合的不同元素时才这样做,或者不需要中间结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      相关资源
      最近更新 更多