Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 如何在合并方法中使用linq的结果_C#_.net_Ado.net - Fatal编程技术网

C# 如何在合并方法中使用linq的结果

C# 如何在合并方法中使用linq的结果,c#,.net,ado.net,C#,.net,Ado.net,我有这个密码 但我犯了以下错误: Error 1 Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<System.Data.DataRow>' Error 2 'System.Collections.Generic.IEn

我有这个密码

但我犯了以下错误:

Error   1   Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<System.Data.DataRow>'   

Error   2   'System.Collections.Generic.IEnumerable<AnonymousType#1>' does not contain a definition for 'CopyToDataTable' and the best extension method overload 'System.Data.DataTableExtensions.CopyToDataTable<T>(System.Collections.Generic.IEnumerable<T>)' has some invalid arguments 



 var distinctRows = (from DataRow dRow in vwBusPark.toDataTable().Rows
                                    select new { col1 = dRow["BusinessParkID"], col2 = dRow["BusinessParkID"] }).Distinct();

                dataSet.BusinessPark.Merge(distinctRows.CopyToDataTable<DataRow>(), true, System.Data.MissingSchemaAction.Ignore);
错误1实例参数:无法从“System.Collections.Generic.IEnumerable”转换为“System.Collections.Generic.IEnumerable”
错误2“System.Collections.Generic.IEnumerable”不包含“CopyToDataTable”的定义,最佳扩展方法重载“System.Data.DataTableExtensions.CopyToDataTable(System.Collections.Generic.IEnumerable)”具有一些无效参数
var distinctRows=(来自vwBusPark.toDataTable().Rows中的DataRow dRow
选择新的{col1=dRow[“BusinessParkID”],col2=dRow[“BusinessParkID”]});
dataSet.BusinessPark.Merge(distinctRows.CopyToDataTable(),true,System.Data.MissingSchemaAction.Ignore);
我试过这个:

dataSet.BusinessPark.Merge(vwBusPark.toDataTable().Rows.Except(DataRowComparer<UC010_WizardStepBusinessParkDataSet.BusinessParkRow>.Default).CopyToDataTable(), true, System.Data.MissingSchemaAction.Ignore);
dataSet.BusinessPark.Merge(vwBusPark.toDataTable().Rows.Exception(DataRowComparer.Default).CopyToDataTable(),true,System.Data.MissingSchemaAction.Ignore);
但我有两个错误:

Error   2   'System.Collections.Generic.IEnumerable<AnonymousType#1>' does not contain a definition for 'CopyToDataTable' and the best extension method overload 'System.Data.DataTableExtensions.CopyToDataTable<T>(System.Collections.Generic.IEnumerable<T>)' has some invalid arguments 

Error   1   Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<System.Data.DataRow>'
错误2“System.Collections.Generic.IEnumerable”不包含“CopyToDataTable”的定义,最佳扩展方法重载“System.Data.DataTableExtensions.CopyToDataTable(System.Collections.Generic.IEnumerable)”具有一些无效参数
错误1实例参数:无法从“System.Collections.Generic.IEnumerable”转换为“System.Collections.Generic.IEnumerable”

这些不是数据行,因此无法将它们复制到数据表中

假设
BusinessPark
vwBusPark
具有相同的列名,则根本不需要LINQ查询;相反,你可以直接写

vwBusPark.toDataTable().Rows.Except(...).CopyToDataTable()

这些不是数据行,因此不能将它们复制到数据表中

假设
BusinessPark
vwBusPark
具有相同的列名,则根本不需要LINQ查询;相反,你可以直接写

vwBusPark.toDataTable().Rows.Except(...).CopyToDataTable()

vwBusPark将返回3个相等的行,我只需要使用该行的一个副本就可以在合并中使用它,你知道怎么做吗?感谢you@Luis:使用
DataRowComparer调用
Distinct()
Exception()
。默认值
应该在Exception中放置什么?dataSet.BusinessPark.Merge(vwBusPark.toDataTable().Rows.Exception().CopyToDataTable(),true,System.Data.MissingSchemaAction.Ignore);到目前为止,它已编译。要排除的行集合(
a,b除外)和
DataRowComparer。默认值告诉它按值而不是按引用进行比较。你可能想要
Distinct()
(它仍然需要比较器)。我更喜欢linq,除了这件事让我发疯!!!:)(dataSet.BusinessPark.Merge(vwBusPark.toDataTable().Rows.Exception(vwBusPark.toDataTable().Rows,dataSet.BusinessPark.Rows),CopyToDataTable(),true,System.Data.MissingSchemaAction.Ignore);vwBusPark将返回3个相等的行,我只需要使用该行的一个副本就可以在合并中使用它,您知道如何使用吗?谢谢you@Luis:使用
DataRowComparer调用
Distinct()
Except()
。默认值
在Except?dataSet.BusinessPark.Merge(vwBusPark.toDataTable().Rows.Except)中应该放置什么().CopyToDataTable(),true,System.Data.MissingSchemaAction.Ignore);到目前为止,它编译。要排除的行集合(
a,b除外)和
DataRowComparer。默认值告诉它按值而不是按引用进行比较。您可能需要使用
Distinct()
(仍然需要比较器).我更喜欢linq,这件事让我抓狂!!!:)(dataSet.BusinessPark.Merge(vwBusPark.toDataTable().Rows.Exception(vwBusPark.toDataTable().Rows,dataSet.BusinessPark.Rows)。CopyToDataTable(),true,System.Data.MissingSchemaAction.Ignore);您知道除
之外的
是什么意思吗?您可能想要
不同的
。您知道除
之外的
是什么意思吗?您可能想要
不同的