c# - 使用表名访问DataSet中的DataTable

标签 c# .net datatable dataset

我目前正在编写一个程序,该程序从 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/

相关文章:

c# - 从代码创建 Azure 数据库登录会引发 SqlException

c# - 是否有使用属性将注入(inject)参数绑定(bind)到成员字段的包?

c# - 如何在 C# 中的 Active Directory 中的 UserPrincipal 对象上设置管理器属性

c# - 使用 .NET 创建 Symbian 应用程序

.net - System.Globalization.CultureInfo(反)序列化

jsf - 在jsf数据表中选择一行

c# - Unity 2D线对撞机

c# - 可以在 WPF 应用程序中使用 jQuery 吗?

jquery - 无法重新初始化数据表 - 数据表的动态数据

c# - 将 DataTable 列转换为类型化 IEnumerable[]