[英]PLINQ AsParallel error with datatable
I am trying to use AsParallel
with the datatable 我正在尝试将
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();
But I am getting an error here 但是我在这里出错
system.data.enumerablerowcollection<system.data.datarow> does not contain a definition for 'Asparallel'
I am using visual studio 2008. Do I need any extra library for this ? 我正在使用Visual Studio2008。是否需要任何额外的库?
Bad idea to use AsParallel in inner statements. 在内部语句中使用AsParallel的坏主意。 You won't speed up DB querying.
您不会加快数据库查询的速度。
Put it in the end, if you need to operate collection: 最后,如果您需要操作收集:
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();
You can't use AsParallel
(or any linq extension methods as far as I know) on the DataRow
class. 您不能在
DataRow
类上使用AsParallel
(或据我所知的任何linq扩展方法)。 You can use it on DataTable
though, and then just use DataTable.Rows
. 不过,您可以在
DataTable
上使用它,然后仅使用DataTable.Rows
。
Also using AsParallel
won't really do anything in your case, only do it when you need to query on different elements of a collection simultaneously when order, or intermediate results aren't needed. 同样,使用
AsParallel
并不会真正执行任何操作,仅当需要在不需要顺序或不需要中间结果的情况下同时查询集合的不同元素时才使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.