【发布时间】:2013-03-03 04:43:46
【问题描述】:
实体框架工作 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(o 中的 var 区域) { //int a = area.UserID; }
注意:上面的语法是怎么出错的
message:foreach 语句不能对“object”类型的变量进行操作 因为“对象”不包含公共定义 'GetEnumerator'
如果有任何疑问,请询问。
【问题讨论】:
-
如果你知道变量
o的类型。使用该类型显式转换Session["UserPermission"]。 -
除了您的会话问题,您应该考虑在此处使用 Membership 和/或 RoleProvider。除了尝试维护安全的应用程序之外,会话管理可能是另一个令人头疼的问题。
-
var o = Session- 和错误foreach statement cannot operate on variables of type 'object'- 您需要将其转换为正确的类型。您拥有它的方式是将对象分配给 var 并尝试对其进行迭代。 我同意 @GlennFerrieLive 的观点,您不应使用 Sessions 获取会员信息。 -
Freddie Fabregas,感谢回复,请检查我的编辑,使用强制转换但现在不能使用 AnonymousType 变量。帮助我使用 AnonymousType 属性
标签: c# .net session foreach ienumerable