多个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

此方法用于数据结构化

原文地址:https://www.cnblogs.com/shellphen/p/6531010.html