2014-12-08 35 views
0

我是Asp.Net MVC4的新手。我正在爲Session存儲一個列表。從那個會話我試圖從會話變量檢索列表。得到它後,我想獲得一個基於索引值的行值。如何得到它,請幫我解決這個問題。在此先感謝從MVC4中的會話變量中檢索列表?

這是我的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 =會話[ 「MyTaskListSession」];

+2

你有什麼問題? – dotnetstep 2014-12-08 06:24:03

+0

什麼是通知?是一個列表?如果是的話,那對我來說看起來都很好。 – JanR 2014-12-08 06:25:38

+0

你能告訴我們什麼是類型的資料收集? – dotnetstep 2014-12-08 06:30:29

回答

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"]; 
+0

我正在使用實體框架。實體已經被拒絕。我是否需要爲List創建另一個實體類? – Vetri 2014-12-08 06:54:49

+0

您可以在選擇新的選項中選擇相同的實體。要點是你必須使用Strongly類型或使用動態。 – dotnetstep 2014-12-08 06:56:53

+0

現在我創建了一個類,其中我添加了與列表屬性相同的實體。但仍然我得到匿名錯誤 – Vetri 2014-12-08 09:46:12