首页 > 解决方案 > 将包含 DataSet 的 Object (var) 转换为实际的 DataSet

问题描述

我在 Session 中存储了一个 DataSet,它当前存储为一个对象。我用谷歌搜索和尝试各种方法使我可怜的大脑变得紧张。

需要有关如何操作的帮助。

完整代码粘贴:

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 中的 DataSet 转换为实际的 DataSet。

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

我目前已经尝试过 Converter、Convert 和 Convert.ChangeType。

标签: c#xml

解决方案


您唯一需要的是演员表:

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;
        }
    }
}

推荐阅读