• 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
  • 相关阅读:
    Codeforces Round #700 (Div. 2)
    2020-2021 ACM-ICPC Brazil Subregional Programming Contest
    Codeforces Round #699 (Div. 2)
    2021牛客寒假算法基础集训营3
    2021牛客寒假算法基础集训营1
    Educational Codeforces Round 103 (Rated for Div. 2)
    Codeforces Round #697 (Div. 3)
    Codeforces Round #696 (Div. 2)
    2017 ECNA Regional Contest
    spring的aop详解
  • 原文地址:https://www.cnblogs.com/philo/p/3230534.html
Copyright © 2020-2023  润新知