我目前正在编写一个程序,该程序从 SQL 接收 3 个表,其中包含我正在使用的每个表中的数据,并通过行来创建相应类的对象。
经过一步一步的调试,我可以看到DataSet中的数据确实是正确的,但我似乎无法通过名称访问它。 当我使用索引访问数据集中的表时,它工作得很好,就像这样 -
DataSet ds = new ProgramProcedures().GetTestByUser(UserId);
if (ds.Tables[0].IsHasRows())
{
foreach (DataRow _dr in ds.Tables[0].Rows)
{
TestList.Add(new Test(_dr));
}
}
当我尝试按名称访问它时,它失败并且不输入 if 语句。
DataSet ds = new ProgramProcedures().GetTestByUser(UserId);
if (ds.Tables["Name1"].IsHasRows())
{
foreach (DataRow _dr in ds.Tables["Name1"].Rows)
{
TestList.Add(new Test(_dr));
}
}
在存储过程中,数据来 self 包含以下几行 -
@tables nvarchar(max)='' output
set @tables='Name1,Name2,Name3'
在调试和检查ds变量的内容时,数据是正确的,但表的名称是“Table,Table1,Table2” 我究竟做错了什么?我想按名称访问表,因为它使代码在对其或过程进行任何更改时更加可靠。
我尝试使用表的索引而不是它们的名称,这非常有效,但我想使用表的名称。
最佳答案
我已经解决了这个问题。
我没有将 @tables 参数传递到存储过程中,一旦我这样做了,一切都会像发条一样工作。
感谢您的时间和精力,非常感谢
关于c# - 使用表名访问DataSet中的DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77674224/