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

时间:2019-03-13 20:53:11

标签: c#

我有这个对象,可以通过将其作为对象返回来处理所有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,然后再返回到列表,但这似乎没有从对象到数据表的任何可能转换方式。

我们将不胜感激,如果没有提供帮助,请随时告诉我。

1 个答案:

答案 0 :(得分:1)

似乎类似于this question。不幸的是,您无法在C#中执行类似的操作,但是有解决方法。

调用该方法时,请尝试:

DataTable newDT = (DataTable)QuerySql();

在调用对象时投射对象。

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

private DataTable DTQuerySql(string QueryString, string QueryType = "select")
{
    return (DataTable)QuerySql(QueryString, "datatable", QueryType)
}