[WebApi]返回动态列表dynamic

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[WebApi]返回动态列表dynamic相关的知识,希望对你有一定的参考价值。

返回动态列表dynamic

今天在做接口的时候,在多个账套中存在结构相同的实体
如果在ActionResult<IEnumerable<实体>> 定义实体类型,在不同数据库的实体提示无法转换问题如何解决?
C#提供了动态类型关键字

        public ActionResult<IEnumerable<dynamic>> PostPurchaseByItemVendor(string company, List<string> item, string vendor)
        

            if (!string.IsNullOrEmpty(company))
            

                if (company.ToUpper() == "ZE")
                
                    EFCoreZEDbContext Context = new EFCoreZEDbContext();
                    Context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
                    var purth = from u in Context.Purtgs
                                from t in Context.Purths
                                where u.Tg001 == t.Th001 && u.Tg002 == t.Th002
                                      && (item.Contains(t.Th004)) && (u.Tg005 == vendor)
                                select new  t.Th004, t.Th007 ;

                    var groupList = purth.GroupBy(m => new  m.Th004 ).
                        Select(a => new
                        
                            item = a.Key.Th004.Trim(),
                            qty = a.Sum(c => c.Th007)
                        ).ToList();

                    return groupList.ToList();
                
                if (company.ToUpper() == "ZM")
                
                    EFCoreZMDbContext Context = new EFCoreZMDbContext();
                    Context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
                    var purth = from u in Context.Purtgs
                                from t in Context.Purths
                                where u.Tg001 == t.Th001 && u.Tg002 == t.Th002
                                      && (item.Contains(t.Th004)) && (u.Tg005 == vendor)
                                select new  t.Th004, t.Th007 ;
                    var groupList = purth.GroupBy(m => new  m.Th004 ).
                    Select(a => new
                    
                        item = a.Key.Th004.Trim(),
                        qty = a.Sum(c => c.Th007)
                    ).ToList();

                    return groupList.ToList();
                
                if (company.ToUpper() == "ZR")
                
                    EFCoreZRDbContext Context = new EFCoreZRDbContext();
                    Context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
                    var purth = from u in Context.Purtgs
                                from t in Context.Purths
                                where u.Tg001 == t.Th001 && u.Tg002 == t.Th002
                                      && (item.Contains(t.Th004)) && (u.Tg005 == vendor)
                                select new  t.Th004, t.Th007 ;

                    var groupList = purth.GroupBy(m => new  m.Th004 ).
                        Select(a => new
                        
                            item = a.Key.Th004.Trim(),
                            qty = a.Sum(c => c.Th007)
                        ).ToList();

                    return groupList.ToList();
                

            
            return null;
        

测试:

以上是关于[WebApi]返回动态列表dynamic的主要内容,如果未能解决你的问题,请参考以下文章

前端动态效果 - dynamic

Dynamics CRM 2015/2016新特性之二十四:使用Web API执行操作

我可以使用 VBA 函数将可接受值的(动态)列表返回到 Excel 的数据验证中吗?

Ansible简单实践Dynamic Inventory

在webapi中为Action使用dynamic参数实现Post方式调用

颤振错误:参数类型“列表<动态>?”不能分配给参数类型“列表<动态>”