将包含数据集的对象(var)转换为实际数据集

时间:2018-11-07 19:15:00

标签: c# xml

我在会话中存储一个数据集,它当前存储为一个对象。我已经使我可怜的大脑陷入紧张,并尝试了各种方法。

需要帮助。

完整代码粘贴:

protected void Page_Load(object sender, EventArgs e)
    {
        if (HttpContext.Current.Session.Contents["StatusInformation"] == null)
        {
            DataSet ATServerURLList = new DataSet("ATServerURLList");
            ATServerURLList.Tables.Add(Populate.ReturnURLList());
            Session["StatusInformation"] = new DataSet();
            Session["StatusInformation"] = XMLManager.RetrieveXML(ATServerURLList);
            Session["TimeXMLRetrieved"] = new DateTime();
            Session["TimeXMLRetrieved"] = DateTime.Now;
        }
        DateTime DateTimeNowForComparison = DateTime.Now; //Gets TimeNow for Comparison
        var TimeXMLRetrievedVar = Session["TimeXMLRetrieved"]; //Pulls the time the last XML was retrieved and stores it in a variable
        DateTime TimeXMLRetrievedDateTime = Convert.ToDateTime(TimeXMLRetrievedVar); //Takes the Time XML was retrieved and stores it in a DateTime
        TimeSpan ComparisonResult = DateTimeNowForComparison.Subtract(TimeXMLRetrievedDateTime); //Subtracts the time the XML was retrived from the TimeNow
        if (ComparisonResult.TotalHours > 12)
        {
            DataSet ATServerURLList = new DataSet("ATServerURLList");
            ATServerURLList.Tables.Add(Populate.ReturnURLList());
            Session["StatusInformation"] = new DataSet();
            Session["StatusInformation"] = XMLManager.RetrieveXML(ATServerURLList);
            Session["TimeXMLRetrieved"] = new DateTime();
            Session["TimeXMLRetrieved"] = DateTime.Now;
        }

//到目前为止,一切都很好,不需要上述部分的帮助。只需将var dsServersVar从Session中存储的数据集转换为实际的数据集即可。

        var dsServersVar = Session["StatusInformation"];
            //gridStatusCustomersOverviewNotPaid.DataSource = dsServers.Tables["StatusCustomersOverviewNotPaid"];
            //gridStatusCustomersOverviewNotPaid.DataBind();
    }

我目前已经尝试使用Converter,Convert和Convert.ChangeType。

1 个答案:

答案 0 :(得分:0)

您唯一需要的是演员:

DataSet dsServersVar = (DataSet)Session["StatusInformation"];

我通常通过引入一个包含会话变量并使其易于访问的类来解决此问题。

类似的东西:

public static class SessionVariables
{
    public static DataSet StatusInformation
    {
        get
        {
            return (DataSet)HttpContext.Current.Session["StatusInformation"];
        }
        set
        {
            HttpContext.Current.Session["StatusInformation"] = value;
        }
    }
}