EF中使用Select new 方法中字段值替換的問題


前提需要替換查詢得到的List當中的某個字段的值,替換規則有一個mapping關系

嘗試代碼 有問題 無法獲取任何數據 

 1 /// <summary>
 2         /// 獲取Treegrid的List
 3         /// </summary>
 4         /// <returns></returns>
 5         public JsonResult GetOrgnizationList()
 6         {
 7             IQueryable<Rights_Sys_Organization> list = db.Rights_Sys_Organization;
 8             return Json(new treegrid
 9             {
10                 rows = list.Select(
11                 s => new
12                 {
13                     _parentId = s.ParentCode,
14                     OrganizationName = s.OrganizationName,
15                     EnglishName = s.EnglishName,
16                     OrganizationType = s.OrganizationType,
17                     States = SysDictionaryCollection.GetFieldTextByDicTypeAndValue("DicType",s.States),
18                     OrganizationCode = s.OrganizationCode,
19                     Order = s.Order
20                 }).OrderBy(c => c.Order)
21             }, JsonRequestBehavior.AllowGet);
22         }
View Code

正常的代碼

 1   /// <summary>
 2         /// 獲取Treegrid的List
 3         /// </summary>
 4         /// <returns></returns>
 5         public JsonResult GetOrgnizationList()
 6         {
 7             IQueryable<Rights_Sys_Organization> list = db.Rights_Sys_Organization;
 8             return Json(new treegrid
 9             {
10                 rows = list.Select(
11                 s => new
12                 {
13                     _parentId = s.ParentCode,
14                     OrganizationName = s.OrganizationName,
15                     EnglishName = s.EnglishName,
16                     OrganizationType = s.OrganizationType,
17                     States = s.States,
18                     OrganizationCode = s.OrganizationCode,
19                     Order = s.Order
20                 }).OrderBy(c => c.Order)
21             }, JsonRequestBehavior.AllowGet);
22         }
View Code

暫時未找到解決辦法 如果有人知道怎么解決請留言 謝謝!

 

2013-08-05

解決辦法:由於dynamic類型不能修改列表中的值(貌似是這樣說的),所以解決辦法是先將list給拿出來tolist(),然后foeach改變值,改完之后再去new row;代碼如下:

public JsonResult GetOrgnizationList()
        {
            IQueryable<Rights_Sys_Organization> list = db.Rights_Sys_Organization;

            List<Rights_Sys_Organization> rlist = list.ToList();

            foreach (var item in rlist)
            {
                item.States = SysDictionaryCollection.GetFieldTextByDicTypeAndValue("OrgStates", item.States);
            }

            foreach (var item in rlist)
            {
                item.OrganizationType = SysDictionaryCollection.GetFieldTextByDicTypeAndValue("OrgType", item.OrganizationType);
            }

            dynamic rows = rlist.Select(
                s => new
                {
                    _parentId = s.ParentCode,
                    OrganizationName = s.OrganizationName,
                    EnglishName = s.EnglishName,
                    OrganizationType = s.OrganizationType,
                    States = s.States,
                    OrganizationCode = s.OrganizationCode,
                    Order = s.Order
                }).OrderBy(c => c.Order);
                           
            return Json(new treegrid
            {
                rows = rows
            }, JsonRequestBehavior.AllowGet);
        }
View Code

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM