从MVC4中的会话变量中检索列表?

时间:2014-12-08 06:22:05

标签: c# linq asp.net-mvc-4

我是Asp.Net MVC4的新手。我正在将一个列表存储到Session。从那个会话我试图从会话变量中检索列表。获得它之后,我想根据索引值获取行值。怎么弄它请帮我解决这个问题。提前致谢

这是我对会话的LINQ结果:

var notifications = (from t in db.Tbl_Tasks
                                     join tu in db.Tbl_User_Task on t.TaskId equals tu.Task_Id
                                     where u.UserID==Id && t.TaskStart == startdate && t.TaskEnd == enddate 
                                     orderby t.TaskStart
                                     select new
                                     {
                                         t.TaskId,
                                         t.Task,
                                         tu.AdminComment,
                                     }).ToList(); 
    var NotificationList = notifications.GroupBy(x => x.Task_User_Id).Select(group => group.LastOrDefault()).ToList();
    Session["MyTaskListSession"] = NotificationList;  

我正在这样开会:

var myTaskList = Session [“MyTaskListSession”];

1 个答案:

答案 0 :(得分:1)

我建议跟随。

创建一个类。

public class Test
{ 
   public int TaskId {get;set;}
   public string Task {get;set;}
   public string AdminComment {get;set;}
}

var notifications = (from t in db.Tbl_Tasks
                                     join tu in db.Tbl_User_Task on t.TaskId equals tu.Task_Id
                                     where u.UserID==Id && t.TaskStart == startdate && t.TaskEnd == enddate 
                                     orderby t.TaskStart
                                     select new Test
                                     {
                                       TaskId=  t.TaskId,
                                       Task =  t.Task,
                                       AdminComment =  tu.AdminComment,
                                     }).ToList(); 
    var NotificationList = notifications.GroupBy(x => x.Task_User_Id).Select(group => group.LastOrDefault()).ToList();
    Session["MyTaskListSession"] = NotificationList; 

你可以得到这样的会话值。

var myTaskList= (List<Test>)Session["MyTaskListSession"];

注意: 如果不指定任何类型,则会创建匿名类型。它是自动生成的,我们不知道它的类型。因此,要么必须使用反射,要么使用强类型类,如“Test”。

所以你以后可以继续这样做。

如果您不想使用强类型,那么如果我假设您使用的是.NET Framework 4.0,那么您可以这样做。

var notifications = (from t in db.Tbl_Tasks
                                     join tu in db.Tbl_User_Task on t.TaskId equals tu.Task_Id
                                     where u.UserID==Id && t.TaskStart == startdate && t.TaskEnd == enddate 
                                     orderby t.TaskStart
                                     select new
                                     {
                                         t.TaskId,
                                         t.Task,
                                         tu.AdminComment,
                                     }).ToList(); 
    var NotificationList = notifications.GroupBy(x => x.Task_User_Id).Select(group => group.LastOrDefault()).ToList();
    Session["MyTaskListSession"] = NotificationList;  

当您检索时,请执行

dynamic myTaskList  =   Session["MyTaskListSession"];