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

    此方法用于数据结构化

  • 相关阅读:
    七款HTML在线编辑器[下载]
    三层开发框架
    vs2005快捷键
    Javascript的IE和Firefox兼容性汇编
    序列化
    [Web2.0]web2.0中的tag及其技术实现
    结合FlyTreeView 无限级别的分类
    sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
    FlyTreeView4.3.2.82 破解方法 (NineRays.Web.UI.WebControls.FlyTreeView)
    asp.net 获取cpu序列号 硬盘ID 网卡硬地址
  • 原文地址:https://www.cnblogs.com/shellphen/p/6531010.html
Copyright © 2011-2022 走看看