如何将类型对象转换为类型数据表

问题描述 投票:-1回答:1

我有这个对象,我通过将它们作为对象返回来处理我的所有SQL查询。在下面列出的方法中,我可以传递3个参数,sql查询,我想要返回的数据类型以及sql是查询还是非查询

private object QuerySql(string QueryString, string DataType = "null", string QueryType = "Select")
    {
            conn.Open();
            if (DataType == "DataTable")
            {
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dataTable);
                da.Dispose();
                conn.Close();
                return dataTable;
            }
            else if (DataType == "String")
            {
                dataString = Convert.ToString(cmd.ExecuteScalar());
                conn.Close();
                return dataString;
            }
            else if (DataType == "Object")
            {
                dataObject = cmd.ExecuteScalar();
                conn.Close();
                return dataObject;
            }
            else if (DataType == "List")
            {
                using (SqlDataReader Reader = cmd.ExecuteReader())
                {
                    while (Reader.Read())
                    {
                        dataList.Add(Reader.GetValue(0));
                    }
                }
                conn.Close();
                return dataList;

            }
            else if (QueryType == "Delete")
            {
                deletedRows = cmd.ExecuteNonQuery();
                if (deletedRows > 0)
                {

                    cmd.ExecuteNonQuery();
                    conn.Close();
                    return 1;
                }
                else
                {
                    conn.Close();
                    return 0;
                }
            }
            else
            {
                return null;
            }


        }

非常具体在这个领域

if (DataType == "DataTable")
        {
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dataTable);
            da.Dispose();
            conn.Close();
            return dataTable;
        }

它返回一个数据表,但它作为一个对象返回。所以我很好奇是否有一个简单的方法,一旦返回将其转换为数据表。

我能够成功地将列表转换为Ilist然后返回到列表但是这似乎没有任何可能的方法从对象转换为datatable。

非常感谢任何帮助,如果我没有包含一些东西,请随时告诉我。

c#
1个回答
1
投票

似乎与this question相似。不幸的是,你不能在C#中做这样的事情,但有一些解决方法。

调用方法时,请尝试:

DataTable newDT = (DataTable)QuerySql();

在调用它时强制转换对象。

您可以尝试的另一件事是为每种返回类型创建相同的方法。例如:

private DataTable DTQuerySql(string QueryString, string QueryType = "select")
{
    return (DataTable)QuerySql(QueryString, "datatable", QueryType)
}
© www.soinside.com 2019 - 2024. All rights reserved.