zoukankan      html  css  js  c++  java
  • 多个string数组组装成一个List<Object>

          最近遇到一个问题,数据库里面的数据存了一个多图字段和一个图片对应的排序,然后输出的时候需要按排序处理下。

         当然,最容易想到的办法是遍历,然后添加,这次不想玩这么低级的代码,而且类似的需求项目中有好几个地方都有用到,就想着能不能写个通用的方法,

    于是想到了泛型,写了下面这么个方法

        /// <summary>
        /// 将N个数组映射成对象返回用于数据结构化
        /// 要求各数组的长度一样,默认第一个数组的数据会成为对象的第一个属性的值,以此类推
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="arrs">字符串二维数组</param>
        /// <returns></returns>
        public static List<T> AssemblingArraysToObject<T>(params string[][] arrs) where T : new()
        {
            try
            {
                List<T> objList = new List<T>();
                T obj = new T();
                PropertyInfo[] properts = obj.GetType().GetProperties();

                  int arrCount = arrs.Length;
                  int itemCount = arrs[0].Length;
                  for (int i = 0; i < itemCount; i++)
                  {
                      for (int j = 0; j < arrCount; j++)
                      {
                          properts[j].SetValue(obj, arrs[j][i], null);
                      }
                      objList.Add(obj);
                      obj = new T();
                  }

                return objList;
            }
            catch (Exception)
            {
                throw new Exception("数据异常");
            }
        }

    使用方法很简单,如下,以后遇到类似的东西,就可以直接用了,入参也是不定数量的,通用性比较广

    List<Photos> carousels = StringTools.AssemblingArraysToObject<Photos>(photos, orders);// 将两个数组映射成list

    此方法用于数据结构化

  • 相关阅读:
    Apache Commons CLI命令行启动
    《三体1——地球往事》—— 读后总结
    《鬼谷子的局4》 —— 读后总结
    Microsoft Visual C++ 2017 Redistributable
    Navicat Premium 12安装与激活(亲测已成功激活)
    如何从DOS命令窗口进行复制粘贴
    使用java写js中类似setTimeout的代码
    Spring @RestController、@Controller区别
    SpringBoot整合Swagger2
    git clone 报“The project you were looking for could not be found.”
  • 原文地址:https://www.cnblogs.com/shellphen/p/6531010.html
Copyright © 2011-2022 走看看