• C#/webAPI/将sql多个查询结果集转成嵌套的对象


    数据库的查询结果:

     C# 实体模型

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Xml.Serialization;
    
    namespace XXX
    {
        /// <summary>
        /// 费用详情
        /// </summary>
        public class FeeDetailsViewModel
        {
    
            ///<summary>
            ///总费用
            ///</summary>
            public decimal ItemTotalFee { get; set; }
    
    
            ///<summary>
            ///缴费详情信息
            ///</summary>
            public List<PaymentDetails> Products { get; set; }
        }
    
        /// <summary>
        /// 缴费详情信
        /// </summary>
        public class PaymentDetails {
            ///<summary>
            ///科室总费用2
            ///</summary>
            public decimal ItemTotalFee { get; set; }
    
    
            ///<summary>
            ///执行科室编号
            ///</summary>
            public string OperateDeptCode { get; set; }
    
    
            ///<summary>
            ///执行科室名称
            ///</summary>
            public string OperateDeptName { get; set; }
    
    
            ///<summary>
            ///项目类容
            ///</summary>
            public List<ItemLists> ItemList { get; set; }
    
        }
        /// <summary>
        /// 项目类容
        /// </summary>
        public class ItemLists {
            ///<summary>
            ///账单详情
            ///</summary>
            public string BillDetail { get; set; }
    
    
            ///<summary>
            ///单价
            ///</summary>
            public decimal UnitPrice { get; set; }
    
    
            ///<summary>
            ///数量
            ///</summary>
            public decimal Amount { get; set; }
    
    
            ///<summary>
            ///金额
            ///</summary>
            public  decimal ItemFee { get; set; } 
        }
    }
    

      处理实体嵌套

                
                var response = await _context.MultipleResults("pLF_MZZF02", parameters)
                   .With<FeeDetailsViewModel>() //sql 第一个查询结果集
                   .With<PaymentDetails>()      //sql 第二个查询结果集
                   .With<ItemLists>()           //sql 第三个查询结果集
                   .Execute();
                //检查响应代码
                List<FeeDetailsViewModel> FeeDetailsViewModelResoult = new List<FeeDetailsViewModel>();
                List<FeeDetailsViewModel> _FeeDetailsViewModelList = (List<FeeDetailsViewModel>)response[0];
                List<PaymentDetails> _PaymentDetailsList = (List<PaymentDetails>)response[1];
                List<ItemLists> _ItemListsList = (List<ItemLists>)response[2];
                for (int i = 0; i < _FeeDetailsViewModelList.Count(); i++)
                {
                    FeeDetailsViewModel _FeeDetailsViewModel = new FeeDetailsViewModel();
                    _FeeDetailsViewModel.ItemTotalFee = _FeeDetailsViewModelList[i].ItemTotalFee;
                    _FeeDetailsViewModel.Products = new List<PaymentDetails>();
                    for (int j = 0; j < _PaymentDetailsList.Count(); j++)
                    {
                        PaymentDetails _PaymentDetails = new PaymentDetails();
                        _PaymentDetails.ItemTotalFee = _PaymentDetailsList[j].ItemTotalFee;
                        _PaymentDetails.OperateDeptCode = _PaymentDetailsList[j].OperateDeptCode;
                        _PaymentDetails.OperateDeptName = _PaymentDetailsList[j].OperateDeptName;
                        _PaymentDetails.ItemList = new List<ItemLists>();
                        for (int k = 0; k < _ItemListsList.Count(); k++)
                        {
                            ItemLists _ItemLists = new ItemLists();
                            _ItemLists.BillDetail = _ItemListsList[k].BillDetail;
                            _ItemLists.UnitPrice = _ItemListsList[k].UnitPrice;
                            _ItemLists.Amount = _ItemListsList[k].Amount;
                            _ItemLists.ItemFee = _ItemListsList[k].ItemFee;
                            _PaymentDetails.ItemList.Add(_ItemLists);
                        }
                        _FeeDetailsViewModel.Products.Add(_PaymentDetails);
                    }
                    FeeDetailsViewModelResoult.Add(_FeeDetailsViewModel);
                }
                return new BaseViewModel
                {
                    Code = Convert.ToInt32(parameters.SingleOrDefault(c => c.ParameterName == "Code")?.Value),
                    Message = parameters.SingleOrDefault(c => c.ParameterName == "Msg")?.Value.ToString(),
                    Data = FeeDetailsViewModelResoult
                };
    

      最终得到的json结果

    {
      "code": 1,
      "message": "",
      "body": [
        {
          "ItemTotalFee": 4.07,
          "Products": [
            {
              "ItemTotalFee": 4.07,
              "OperateDeptCode": "0",
              "ItemList": [
                {
                  "BillDetail": "",
                  "UnitPrice": 4.073,
                  "Amount": 1,
                  "ItemFee": 0
                }
              ]
            }
          ]
        }
      ]
    }
  • 相关阅读:
    LR与SVM的异同
    精确率,召回率
    XgBoost推导与总结
    梯度下降中的步长选择-线性搜索
    页面去掉某个css属性
    composer 安装某个插件后 引入方法
    javascript,检测对象中是否存在某个属性
    js 计算字符串长度 中文为2 英文为1
    laravel 新手 =_= 持续更新
    php compact() 函数
  • 原文地址:https://www.cnblogs.com/soulsjie/p/12930206.html
Copyright © 2020-2023  润新知