存储会话变量中对象的列表

本文关键字:列表 对象 会话 变量 存储 | 更新日期: 2024-09-26 02:46:52

我想将控制器调用的查询结果存储在变量中

  public ActionResult Index()
    {
        Session["dateDebut"] = DateTime.Now.AddMonths(-1).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
        Session["dateFin"] = DateTime.Now.AddDays(0).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
        HostClassReq hostClassChart = new HostClassReq();
        Chart_Event cex = new Chart_Event();
        var viewModel = new Chart_Event
        {
            chartVM = hostClassChart.callHostClass()
        };
        return View(viewModel);
    }

以下是方法callHostClass实现

    public Highcharts callHostClass()
    {
        DateTime begin = DateTime.ParseExact(HttpContext.Current.Session["dateDebut"].ToString(), "dd/MM/yyyy",
                                     System.Globalization.CultureInfo.InvariantCulture);
        DateTime end = DateTime.ParseExact(HttpContext.Current.Session["dateFin"].ToString(), "dd/MM/yyyy",
                                   System.Globalization.CultureInfo.InvariantCulture).AddDays(1);
        CreateChart createChart = new CreateChart();
        List<String> xs = new List<string>();


        var maListe = (from p in db.exclure
                      where (p.type.Contains("Host Class"))
                      group p by p.libelle into g
                      select new
                      {
                          libellex = g.Key
                      }).ToList();
        List<string> strListe = new List<string>();
        foreach (var x in maListe.Select(i => i.libellex))
        {
            strListe.Add(x.ToString());
        }

           var   myList = (from p in db.Full
                      where ( (p.date_reception > begin & p.date_reception < end & !p.mc_host_class.Contains("NULL")) &
                   (!strListe.Contains(p.mc_host_class)))
                      group p by p.mc_host_class into g
                      orderby g.Count() descending
                      select new
                      {
                          hostclassx = g.Key,
                          countx = g.Count()
                      }).Take(10).ToList();

       //  HttpContext.Current.Session["allList"] = myList;
         List<Full> questions = (List<Full>)HttpContext.Current.Session["allList"];
       //  questions = List <Full> myList;
         foreach (var x in questions)
         {
         }

         object[] ys =  myList.Select(a => (object)a.countx.ToString()).ToArray();



        foreach (var x in myList.Select(i => i.hostclassx))
        {
            if (x.Length > 20)
            {
                xs.Add((x.Substring(0, 20)));
            }
            else
            {
                xs.Add(x);
            }
        }

        var chart = createChart.createChartBar(xs, ys, 10);
        return chart;

    }

我需要将myList查询的结果存储在一个变量中,该变量将由其他类访问。我需要一些帮助。

存储会话变量中对象的列表

你在找这个吗?

Session["yourName"]=myList;

EDIT出现问题后,EDIT希望在不扩展Controller的类中使用会话。

新部件

因此,您不能使用最初的建议,而是包含System.Webusing System.Web;并使用

HttpContext.Current.Session["yourName"]=myList;

当你必须得到它时,你使用

var yourList = (myListType)Session["yourName"];

如果你在一个扩展控制器或的类中

var yourList = (myListType)HttpContext.Current.Session["yourName"];

否则。

试试这个:

HttpContext.Current.Session["name"] = mylist;

但是要小心访问这样的会话,可能会导致空引用异常