-1

在实体框架上工作 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 变量值分配给变量。 在此处输入图像描述 var o = Session["UserPermission"] as IEnumerable; //使用强制转换 foreach (var area in o) { //int a = area.UserID; }

注意:上面的语法我是怎么出错的

消息:foreach 语句无法对“object”类型的变量进行操作,因为“object”不包含“GetEnumerator”的公共定义

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

4

1 回答 1

1

您是否尝试过类型o转换IEnumerable

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

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

  1. 代码可重用性。
  2. 更好的代码可读性。
于 2013-03-03T05:12:47.127 回答