处理实体框架工作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变量。
var o = Session [“UserPermission”]为IEnumerable; //使用铸造
foreach(o中的var区域)
{
// int a = area.UserID;
}
注意:sabove语法如何错误
消息:foreach语句不能对'object'类型的变量进行操作 因为'object'不包含公共定义 '的GetEnumerator'
如果有任何疑问,请询问。
答案 0 :(得分:1)
您是否尝试将o
类型转换为IEnumerable
?
除此之外,在foreach
循环中,您必须使用dynamic
而不是var
。这是必需的,因为您的类型是匿名的。
但是我仍然强烈建议你至少使用普通类型而不是Anonumous类型有两个原因