如何从会话中获取结果

时间:2013-03-03 04:43:47

标签: c# .net session foreach ienumerable

处理实体框架工作vs2010

执行我的linq查询后得到一个记录列表,想把这条记录放在会话中。现在从会话想要取回我的记录列表,如何从会话中取回记录

Linq查询

 public IEnumerable GetSearchUserGroupPermissionData(int userID = 0)
        {
                var query = from p in this.Context.CmnPermissionGroupUsers
                        join q in this.Context.CmnPermissionGroups on p.PermissionGroupID equals q.PermissionGroupID
                        join r in this.Context.CmnPermissionGroupDocs on p.PermissionGroupID equals r.PermissionGroupID
                        join s in this.Context.CmnUserInfoes on p.UserID equals s.UserID
                        join t in this.Context.CmnDocLists on r.DocListID equals t.DocListID
                        //join u in this.Context.CmnModuleFormCompanies on t.ModuleID equals u.ModuleID
                        //join v in this.Context.CmnModuleLists on u.ModuleID equals v.ModuleID
                        //join w in this.Context.CmnFormLists on u.FormID equals w.FormID

                        where p.IsDeleted == false
                        select new
                        {
                            RecordID = p.PermissionGroupUserRecordID,
                            s.UserID,
                            s.UserFirstName,
                            q.PermissionGroupName,
                            p.EffectiveDate,
                            p.StatusID,
                            t.DocListID,
                            t.DocName,
                            t.ModuleID,
                           // v.ModuleName,
                           // u.FormID,
                            //          t.FormName,
                          //  w.FormName,
                            t.ParentID,
                            t.Sequence,
                            t.IsApprovalRequired,
                            t.CompanyCategoryID,                            
                            t.DocTypeID

                            //p.CreateBy,
                            //p.CreateOn,
                            //p.CreatePc,
                            //p.UpdateBy,
                            //p.UpdateOn,
                            //p.UpdatePc,
                            //p.IsDeleted,
                            //p.DeleteBy,
                            //p.DeleteOn,
                            //p.DeletePc,
                            //p.Transfer
                        };   
         return query.WhereIf(userID != 0, w => w.UserID == userID).ToList();    
        }

将结果放入会话

Session["UserPermission"] = new PermissionGroupUserController().GetSearchUserGroupPermissionData(objEntity.UserID);

现在,想要从session.bellow foreach语法区域取回记录集,因为项目包含每一行的所有属性和值但不能像变量一样分配给变量,为什么不能将AnonymousType变量赋值给a变量。 enter image description here  var o = Session [“UserPermission”]为IEnumerable; //使用铸造             foreach(o中的var区域)             {                 // int a = area.UserID;             }

注意:sabove语法如何错误

  

消息:foreach语句不能对'object'类型的变量进行操作   因为'object'不包含公共定义   '的GetEnumerator'

如果有任何疑问,请询问。

1 个答案:

答案 0 :(得分:1)

您是否尝试将o类型转换为IEnumerable

除此之外,在foreach循环中,您必须使用dynamic而不是var。这是必需的,因为您的类型是匿名的。

但是我仍然强烈建议你至少使用普通类型而不是Anonumous类型有两个原因

  1. 代码可重用性。
  2. 更好的代码可读性。