c#dataRow访问引发System.ArgumentException
有人能解释一下为什么我得到了System.ArgumentException? 代码:c#dataRow访问引发System.ArgumentException,c#,datatable,C#,Datatable,有人能解释一下为什么我得到了System.ArgumentException? 代码: var dsResult=new SecurityYieldsData()//数据集 var syData=(SecurityYieldsData)base.PrepareCAData(ctx、swiftMessage、caData); securityyieldoptionsdataoptionsdata=GetCaOption(ctx,syData.SecurityYields[0],message.B
var dsResult=new SecurityYieldsData()//数据集
var syData=(SecurityYieldsData)base.PrepareCAData(ctx、swiftMessage、caData);
securityyieldoptionsdataoptionsdata=GetCaOption(ctx,syData.SecurityYields[0],message.Body);
syData.Merge(optionsData);
dsResult.Merge(syData);
var temp1=(SecurityYieldOptionsData.SecurityYieldOptionsDataTable)manager.SecurityYieldOptions().GetTable(dsResult);
var temp2=(SecurityYieldOptionsData.SecurityYieldOptionsDataTable)manager.SecurityYieldOptions().GetTable(dsResult.Copy();
int t1=temp1[0]。选项编号;//'temp1[0]。OptionNumber'引发了类型为“System.ArgumentException”的异常
int t1_1=Convert.ToInt32(temp1[0][“OptionNumber”]);//好啊
int t2=temp2[0]。选项编号;//好啊
int t3=optionsData.SecurityYieldOptions[0]。OptionNumber;//好啊
在temp1和temp2的DataSet Visualizer中,我可以看到数据存在,但在t1的情况下,我得到了验证,如果创建temp1的副本,它工作正常(请参见temp2)。我找到了问题的答案。当您将类型化数据集合并到另一个数据集并且目标数据集不包含类型化表时,会发生这种情况。 例如:
var sourceDataSet=new SomeTypedDataset();
var strongTypedTable=新的SomeTypedTable()
sourceDataSet.Tables.Add(strongTypedTable);
var targetDataSet=new SomeTypedDataset();
targetDataSet.Merge(sourceDataSet);//在该步骤中,targetDataSet将包含strongTypedTable byt。此数据表不是强类型的
如果需要保存功能来处理targetDataSet中的强类型数据表,则需要将空类型数据表添加到targetDataSet,然后调用merge
var targetDataSet=new SomeTypedDataset();
Add(新的sometypeddatable());
targetDataSet.Merge(sourceDataSet);
你肯定经常使用var
。那是个坏习惯。什么数据类型是t1
?您是否收到异常消息?tnm:在我的例子中,OptionNumber是intTim Schmelter:System.ArgumentException:列“OptionNumber”不属于表SecurityYieldOptions。好的,那么temp1
是什么数据类型?再说一次,因为您只使用var
,所以我不知道它是什么。