【问题标题】:adding multiple values in object list in web api c#在web api c#的对象列表中添加多个值
【发布时间】:2021-11-19 12:20:49
【问题描述】:

我是 web api 和 C# 的新手。我正在创建一个函数,我在其中调用具有 33 行的表中的值。查询是这样的:

Select * from T_SVRS_Reg_Trans

我创建了一个模型,我在其中放置了如下属性:

public class UserModel
    {

        public int ID { get; set; }
        public string OrgUnit { get; set; }

        public string TDC { get; set; }

        public string CustCode { get; set; }

        public string CustName { get; set; }

        public string DestCode { get; set; }

        public string EMV { get; set; }

        public string Service { get; set; }

        public string SPCCode { get; set; }

        public string SPCode { get; set; }

        public string Remarks { get; set; }

        public int Stage { get; set; }

        public string Cost { get; set; }

        public string SAPUpdate { get; set; }

        public string Active { get; set; }

        public string CreatedBy { get; set; }

        public DateTime CreatedOn { get; set; }

        public string UpdatedBy { get; set; }

        public DateTime UpdatedOn { get; set; }

    }

现在我正在调用表值以将其添加到这些属性中。我的功能是这样的:

[HttpPost]
        [Route("GetTableValue")]
        public IHttpActionResult GetTableValue()
        {
            try
            {
                UserModel objUserModel = new UserModel();


                ManageUserData ObjManageUserData = new ManageUserData();
                var sqlDataTable = ObjManageUserData.GetTableValue();

                if (sqlDataTable.Rows.Count > 0)
                {

                    for (int i = 0; (i < sqlDataTable.Rows.Count); i++)
                    {
                        objUserModel.OrgUnit=(sqlDataTable.Rows[i]["TRT_Org_ID"].ToString());
                        objUserModel.TDC = (sqlDataTable.Rows[i]["TRT_TDC_Code"].ToString());
                        objUserModel.CustCode = (sqlDataTable.Rows[i]["TRT_Cust_Code"].ToString());
                        objUserModel.CustName = (sqlDataTable.Rows[i]["TRT_Cust_Name"].ToString());
                        objUserModel.DestCode = (sqlDataTable.Rows[i]["TRT_Dest_Code"].ToString());
                        objUserModel.EMV = (sqlDataTable.Rows[i]["TRT_EMV"].ToString());
                        objUserModel.Service = (sqlDataTable.Rows[i]["TRT_Service"].ToString());
                        objUserModel.SPCCode = (sqlDataTable.Rows[i]["TRT_SPC_Code"].ToString());
                        objUserModel.SPCode = (sqlDataTable.Rows[i]["TRT_SP_Code"].ToString());
                        objUserModel.Remarks = (sqlDataTable.Rows[i]["TRT_Remarks"].ToString());
                        objUserModel.Stage = (int)(sqlDataTable.Rows[i]["TRT_Stage"]);
                        objUserModel.Cost = (sqlDataTable.Rows[i]["TRT_Cost_Imp"].ToString());
                        objUserModel.SAPUpdate = (sqlDataTable.Rows[i]["TRT_SAP_Update_Status"].ToString());
                        objUserModel.Active = (sqlDataTable.Rows[i]["TRT_IS_ACTIVE"].ToString());
                        objUserModel.CreatedBy = (sqlDataTable.Rows[i]["TRT_CREATED_BY"].ToString());
                        objUserModel.CreatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_CREATED_ON"]);
                        objUserModel.UpdatedBy = (sqlDataTable.Rows[i]["TRT_UPDATED_BY"].ToString());
                        objUserModel.UpdatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_UPDATED_ON"]);
                        
                    }
                }
                return Ok(objUserModel);


            }

            catch (Exception ex)
            {
                return Content(HttpStatusCode.NoContent, "Something went wrong");
            }

但是我注意到只有最后一个表值被添加到模型中,其余部分没有。我想将模型形式的所有 33 个值添加到提到的模型中。有没有办法做到这一点?

请帮忙 }

【问题讨论】:

    标签: c# reactjs asp.net-web-api2 webapi


    【解决方案1】:

    您每次迭代都会覆盖objUserModel。在循环内创建一个new,将它们添加到List&lt;UserModel&gt;,然后将其返回到您的视图中。

    还可以考虑删除古老的匈牙利符号(“obj”前缀)。还可以考虑使用 ORM,而不是使用字符串将列映射到属性。

    【讨论】:

      【解决方案2】:

      您应该创建一个UserModel 类型的ListArray 并向其中添加项目

      try
      {
          List<UserModel> result = new List<UserModel>();
          ManageUserData ObjManageUserData = new ManageUserData();
          var sqlDataTable = ObjManageUserData.GetTableValue();
      
          if (sqlDataTable.Rows.Count > 0)
          {
      
              for (int i = 0; (i < sqlDataTable.Rows.Count); i++)
              {
                  UserModel objUserModel = new UserModel();
                  objUserModel.OrgUnit = (sqlDataTable.Rows[i]["TRT_Org_ID"].ToString());
                  objUserModel.TDC = (sqlDataTable.Rows[i]["TRT_TDC_Code"].ToString());
                  objUserModel.CustCode = (sqlDataTable.Rows[i]["TRT_Cust_Code"].ToString());
                  objUserModel.CustName = (sqlDataTable.Rows[i]["TRT_Cust_Name"].ToString());
                  objUserModel.DestCode = (sqlDataTable.Rows[i]["TRT_Dest_Code"].ToString());
                  objUserModel.EMV = (sqlDataTable.Rows[i]["TRT_EMV"].ToString());
                  objUserModel.Service = (sqlDataTable.Rows[i]["TRT_Service"].ToString());
                  objUserModel.SPCCode = (sqlDataTable.Rows[i]["TRT_SPC_Code"].ToString());
                  objUserModel.SPCode = (sqlDataTable.Rows[i]["TRT_SP_Code"].ToString());
                  objUserModel.Remarks = (sqlDataTable.Rows[i]["TRT_Remarks"].ToString());
                  objUserModel.Stage = (int)(sqlDataTable.Rows[i]["TRT_Stage"]);
                  objUserModel.Cost = (sqlDataTable.Rows[i]["TRT_Cost_Imp"].ToString());
                  objUserModel.SAPUpdate = (sqlDataTable.Rows[i]["TRT_SAP_Update_Status"].ToString());
                  objUserModel.Active = (sqlDataTable.Rows[i]["TRT_IS_ACTIVE"].ToString());
                  objUserModel.CreatedBy = (sqlDataTable.Rows[i]["TRT_CREATED_BY"].ToString());
                  objUserModel.CreatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_CREATED_ON"]);
                  objUserModel.UpdatedBy = (sqlDataTable.Rows[i]["TRT_UPDATED_BY"].ToString());
                  objUserModel.UpdatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_UPDATED_ON"]);
                  result.Add(objUserModel);
              }
          }
          return Ok(result);
      }
      catch (Exception ex)
      {
          return Content(HttpStatusCode.NoContent, "Something went wrong");
      }
      
      

      【讨论】:

        【解决方案3】:

        您需要使用集合而不是单个对象 UserModel。

        [HttpPost]
                [Route("GetTableValue")]
                public IHttpActionResult GetTableValue()
                {
                    try
                    {
                        ManageUserData ObjManageUserData = new ManageUserData();
                        var sqlDataTable = ObjManageUserData.GetTableValue();
                        List<UserModel> userModels = new List<UserModel>();
                        if (sqlDataTable.Rows.Count > 0)
                        {
        
                            for (int i = 0; (i < sqlDataTable.Rows.Count); i++)
                            {
                                var objUserModel = new UserModel()
                                objUserModel.OrgUnit = (sqlDataTable.Rows[i]["TRT_Org_ID"].ToString());
                                objUserModel.TDC = (sqlDataTable.Rows[i]["TRT_TDC_Code"].ToString());
                                objUserModel.CustCode = (sqlDataTable.Rows[i]["TRT_Cust_Code"].ToString());
                                objUserModel.CustName = (sqlDataTable.Rows[i]["TRT_Cust_Name"].ToString());
                                objUserModel.DestCode = (sqlDataTable.Rows[i]["TRT_Dest_Code"].ToString());
                                objUserModel.EMV = (sqlDataTable.Rows[i]["TRT_EMV"].ToString());
                                objUserModel.Service = (sqlDataTable.Rows[i]["TRT_Service"].ToString());
                                objUserModel.SPCCode = (sqlDataTable.Rows[i]["TRT_SPC_Code"].ToString());
                                objUserModel.SPCode = (sqlDataTable.Rows[i]["TRT_SP_Code"].ToString());
                                objUserModel.Remarks = (sqlDataTable.Rows[i]["TRT_Remarks"].ToString());
                                objUserModel.Stage = (int)(sqlDataTable.Rows[i]["TRT_Stage"]);
                                objUserModel.Cost = (sqlDataTable.Rows[i]["TRT_Cost_Imp"].ToString());
                                objUserModel.SAPUpdate = (sqlDataTable.Rows[i]["TRT_SAP_Update_Status"].ToString());
                                objUserModel.Active = (sqlDataTable.Rows[i]["TRT_IS_ACTIVE"].ToString());
                                objUserModel.CreatedBy = (sqlDataTable.Rows[i]["TRT_CREATED_BY"].ToString());
                                objUserModel.CreatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_CREATED_ON"]);
                                objUserModel.UpdatedBy = (sqlDataTable.Rows[i]["TRT_UPDATED_BY"].ToString());
                                objUserModel.UpdatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_UPDATED_ON"]);
                                userModels.Add(userModels);
        
                            }
                        }
                        return Ok(userModels);
        
        
                    }
        
                    catch (Exception ex)
                    {
                        return Content(HttpStatusCode.NoContent, "Something went wrong");
                    }
        
                }
        

        【讨论】:

          【解决方案4】:

          由于您期望返回不止一行,因此您需要在将结果集迭代为某种集合/列表/数组时收集这些行。

          试着列出你的UserModel

          List<UserModel> objUserModels = new List<UserModel>();
          

          然后在 for 循环的每次迭代之后将每个对象添加到列表中:

          for (int i = 0; (i < sqlDataTable.Rows.Count); i++)
          {
              var objUserModel = new UserModel();
          
              objUserModel.OrgUnit=(sqlDataTable.Rows[i]["TRT_Org_ID"].ToString());
              objUserModel.TDC = (sqlDataTable.Rows[i]["TRT_TDC_Code"].ToString());
              objUserModel.CustCode = (sqlDataTable.Rows[i]["TRT_Cust_Code"].ToString());
              objUserModel.CustName = (sqlDataTable.Rows[i]["TRT_Cust_Name"].ToString());
              objUserModel.DestCode = (sqlDataTable.Rows[i]["TRT_Dest_Code"].ToString());
              objUserModel.EMV = (sqlDataTable.Rows[i]["TRT_EMV"].ToString());
              objUserModel.Service = (sqlDataTable.Rows[i]["TRT_Service"].ToString());
              objUserModel.SPCCode = (sqlDataTable.Rows[i]["TRT_SPC_Code"].ToString());
              objUserModel.SPCode = (sqlDataTable.Rows[i]["TRT_SP_Code"].ToString());
              objUserModel.Remarks = (sqlDataTable.Rows[i]["TRT_Remarks"].ToString());
              objUserModel.Stage = (int)(sqlDataTable.Rows[i]["TRT_Stage"]);
              objUserModel.Cost = (sqlDataTable.Rows[i]["TRT_Cost_Imp"].ToString());
              objUserModel.SAPUpdate = (sqlDataTable.Rows[i]["TRT_SAP_Update_Status"].ToString());
              objUserModel.Active = (sqlDataTable.Rows[i]["TRT_IS_ACTIVE"].ToString());
              objUserModel.CreatedBy = (sqlDataTable.Rows[i]["TRT_CREATED_BY"].ToString());
              objUserModel.CreatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_CREATED_ON"]);
              objUserModel.UpdatedBy = (sqlDataTable.Rows[i]["TRT_UPDATED_BY"].ToString());
              objUserModel.UpdatedOn = (DateTime)(sqlDataTable.Rows[i]["TRT_UPDATED_ON"]);
              
              objUserModels.Add(objUserModel);
              
          }
          

          然后返回您的对象列表:

          return Ok(objUserModels);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-07-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多