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);您知道除
之外的是什么意思吗?您可能想要不同的
。您知道除
之外的是什么意思吗?您可能想要不同的
。