-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.below foreach 構文領域からレコード セットを取得したいのですが、アイテムには各行にすべてのプロパティと値が含まれていますが、次のように変数に割り当てることはできません。AnonymousType 変数の値を変数に割り当てることができないのはなぜですか。 ここに画像の説明を入力 var o = Session["UserPermission"] as IEnumerable; //キャスト foreach を使用 (var area in o) { //int a = area.UserID; }

注:上記の構文はどのようにエラーを起こしますか

メッセージ:「オブジェクト」には「GetEnumerator」のパブリック定義が含まれていないため、foreach ステートメントは「オブジェクト」型の変数を操作できません

ご不明な点がございましたら、お尋ねください。

4

1 に答える 1

1

に型キャストしようとoしましたIEnumerableか?

それとは別に、foreachループでは、dynamicの代わりに使用する必要がありvarます。タイプが匿名であるため、これは必須です。

しかし、少なくとも 2 つの理由から、匿名型ではなく通常型を使用することを強くお勧めします。

  1. コードの再利用性。
  2. コードの可読性が向上します。
于 2013-03-03T05:12:47.127 に答える