EF中使用Select new 方法中字段值替换的问题

前提需要替换查询得到的List当中的某个字段的值,替换规则有一个mapping关系

EF中使用Select new 方法中字段值替换的问题

尝试代码 有问题 无法获取任何数据 

 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

相关推荐