zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    row_number() over(partition by的用法
    java基础之--动态代理
    Java中主要有一下三种类加载器;
    HBase基本shell命令
    IntelliJ IDE 基础经验备案 四-查找快捷键
    Docker:5 扩展学习之安装mysql并且将数据挂载到本地磁盘
    Docker:4 扩展学习之修改docker容器配置
    nginx安装部署《简单版》
    Redis基础学习: 与外部交互的数据类型
    Redis基础学习: 内部数据结构
  • 原文地址:https://www.cnblogs.com/philo/p/3230534.html
Copyright © 2011-2022 走看看