Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有datatable的PLINQ AsParallel错误_C#_Linq_Plinq - Fatal编程技术网

C# 带有datatable的PLINQ AsParallel错误

C# 带有datatable的PLINQ AsParallel错误,c#,linq,plinq,C#,Linq,Plinq,我正在尝试对datatable使用aspallel 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")

我正在尝试对datatable使用
aspallel

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.Linq;
var row=从dt.AsEnumerable()中的r0w1开始
在curdt.AsEnumerable().AsParallel()中连接r0w2
关于r0w1.场(“B”)等于r0w2.场(“cr_B”)
在tbmdt.AsEnumerable().AsParallel()中加入r0w3
在r0w1上,字段(“B”)等于r0w3。字段(“tb_B”)到ps
从ps.DefaultIfEmpty()中的r0w3开始
选择新字符串[]{serial_number++.ToString()}
.Concat(r0w1.ItemArray.Concat
(r0w2!=null?r0w2.ItemArray.Skip(1):新对象[]{”“,”“,”“,”“})
.Concat(r0w3!=null?r0w3.ItemArray.Skip(1):新对象[]{“,”,“,”})).ToArray();
但我这里有个错误

system.data.enumerablerowcollection<system.data.datarow> does not contain a definition for 'Asparallel'
system.data.EnumerablerRowCollection不包含“Asparallel”的定义

我正在使用VisualStudio2008。我需要额外的库吗?

在内部语句中使用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();
var行=从r0w1到dt
在curdt中加入r0w2
关于r0w1.场(“B”)等于r0w2.场(“cr_B”)
在tbmdt.AsEnumerable().AsParallel()中加入r0w3
在r0w1上,字段(“B”)等于r0w3。字段(“tb_B”)到ps
从ps.DefaultIfEmpty()中的r0w3开始
选择新字符串[]{serial_number++.ToString()}
.Concat(r0w1.ItemArray.Concat
(r0w2!=null?r0w2.ItemArray.Skip(1):新对象[]{”“,”“,”“,”“})
.Concat(r0w3!=null?r0w3.ItemArray.Skip(1):新对象[]{“,”,“,”})).AsParallel();

在内部语句中使用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();
var行=从r0w1到dt
在curdt中加入r0w2
关于r0w1.场(“B”)等于r0w2.场(“cr_B”)
在tbmdt.AsEnumerable().AsParallel()中加入r0w3
在r0w1上,字段(“B”)等于r0w3。字段(“tb_B”)到ps
从ps.DefaultIfEmpty()中的r0w3开始
选择新字符串[]{serial_number++.ToString()}
.Concat(r0w1.ItemArray.Concat
(r0w2!=null?r0w2.ItemArray.Skip(1):新对象[]{”“,”“,”“,”“})
.Concat(r0w3!=null?r0w3.ItemArray.Skip(1):新对象[]{“,”,“,”})).AsParallel();

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


同样,在您的情况下,使用
aspallel
也不会真正起到任何作用,仅当您需要同时查询集合的不同元素时,才可以这样做,因为不需要顺序或中间结果。

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


另外,在您的情况下,使用
aspallel
也不会真正起到任何作用,仅当您需要在不需要订单或中间结果的情况下同时查询集合的不同元素时才可以使用。

谢谢您的回复。正如我在问题中提到的,由于错误,我甚至不能使用
aspallel
。谢谢你的回复。正如我在问题中提到的,由于错误,我甚至不能使用
AsParallel