在 Session 变量中存储对象列表

Store List of objects in Session variable

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

  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;

编辑 问题编辑出现后,他想在 class 中使用会话而不扩展控制器。

新部分

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

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

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

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

如果您在 class 扩展控制器中或

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

否则。

试试这个:

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

但要小心访问这样的会话,可能会导致 null-ref 异常