C# 如何从动态生成的sql表中读取和处理数据

C# 如何从动态生成的sql表中读取和处理数据,c#,sql,.net,class,C#,Sql,.net,Class,tl;dr有没有一种方法可以从sql表中创建动态类或对象,而sql表中的列您不知道其名称或数量,以后可以用于排序、搜索等 我有一个网站,有各种各样的项目,你可以选择,他们基本上都是相同的,只是他们有不同的数据和用户,这是根据项目ID划分的。像项目通常是 然而,我有一件事是其中一个表是用代码动态创建的,这个表在这里称为projectTable_id number。列基于您在输入表单中选择的内容。在此表单中,您可以选择列的名称、数据类型、大小等。通过这个,我创建了带有自定义列的表 我还创建了一个描述

tl;dr有没有一种方法可以从sql表中创建动态类或对象,而sql表中的列您不知道其名称或数量,以后可以用于排序、搜索等

我有一个网站,有各种各样的项目,你可以选择,他们基本上都是相同的,只是他们有不同的数据和用户,这是根据项目ID划分的。像项目通常是

然而,我有一件事是其中一个表是用代码动态创建的,这个表在这里称为projectTable_id number。列基于您在输入表单中选择的内容。在此表单中,您可以选择列的名称、数据类型、大小等。通过这个,我创建了带有自定义列的表

我还创建了一个描述表来知道这个项目中有哪些列,这个表叫做projectTable\u id number here\u desc

描述表可以如下所示:

而动态生成的表如下所示

这些是剪纸,不是整张桌子

所以表的创建很好,我有关于列的所有信息,等等

此描述表始终与查找其中的数据相同,因此我可以为描述表创建一个类,前提是我可以存储所有数据

但是对于动态生成的表,我不确定应该如何处理数据

现在,获取动态生成表数据的C代码如下所示:

    public static List<List<string>> getAllFromCustomTable(int projectID)
    {
        string tableName = string.Format("projectTable_{0}", projectID);
        string sql = string.Format("SELECT * FROM {0}", tableName);

        SqlConnection connection = new SqlConnection(connectionString);
        SqlCommand command = new SqlCommand(sql, connection);

        List<List<string>> lstCustomTableData = new List<List<string>>();
        List<tableDescription> lstTableDescription = tableDescriptionModel.getAllTableDescription(projectID);
        try
        {
            connection.Open();
            var reader = command.ExecuteReader();
            while (reader.Read())
            {
                #region reader

                List<string> lstCustomTableDataItem = new List<string>();

                if (reader["id"] != DBNull.Value)
                    lstCustomTableDataItem.Add(reader["id"].ToString());
                else
                    lstCustomTableDataItem.Add("");

                foreach (tableDescription tableDescription in lstTableDescription)
                {
                    if (reader[tableDescription.columnName] != DBNull.Value)
                        lstCustomTableDataItem.Add(reader[tableDescription.columnName].ToString());
                    else
                        lstCustomTableDataItem.Add("");
                }

                lstCustomTableData.Add(lstCustomTableDataItem);

                #endregion
            }
        }
        catch (Exception error)
        {
        }
        finally
        {
            connection.Close();
            connection.Dispose();
        }

        return lstCustomTableData;
    }
这确实有效。但是现在我只有一个包含所有数据的字符串列表

但基本上我希望能够排序、搜索,甚至将其转换为json,但我不知道该怎么做,因为我没有一个类用于它,因为列名是动态生成的

我从表描述表中知道列名,但仅此而已

但基本上是2-我几乎什么都只使用类,当我没有可用的类时,我不知道该怎么办。 有没有动力学类或对象可以用于这种情况

我还知道,这段代码对SQL注入是开放的,但这是其中唯一对它开放的部分,并且这些函数仅在具有高用户角色要求的有限区域中可用


感谢您的时间

经典的方式:由DataAdapter填充的DataTable。@TimSchmelter以前没有太多使用过它,但我会研究一下