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

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

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

    /// <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

此方法用于数据结构化

多个string数组组装成一个List<Object>的更多相关文章

  1. 批量删除以及将String数组转换成Integer数组的奇淫技巧

    首先在pom.xml文件添加依赖: <!-- bean工具 --> <dependency> <groupId>commons-beanutils</grou ...

  2. c#查找string数组的某一个值的索引

    string[] array = { "A","B","C","D","H"};   var ind ...

  3. 对N个数组进行操作。先把这N个一维数组合并成一个2为数组;然后进行操作

    using System;using System.Collections.Generic;using System.Linq;using System.Collections;using Syste ...

  4. C# byte数组转换成List<String>

    byte[] bys=buffer; string[] AllDataList=  Encoding.Default.GetString(bys).Split(Environment.NewLine. ...

  5. typedef std::string AddressLines[4]定义了一个string数组,大小为4

    int main() { typedef std::]; std::]; std::string *pal1 = new AddressLines; delete [] pal; delete [] ...

  6. 【C语言】在两个数成对出现的数组中找到一个单独的数。

    //在两个数成对出现的数组中找到一个单独的数.比如{1,2,3.3,1,4.2},即找出4 #include <stdio.h> int find(int arr[], int len) ...

  7. 集合或数组转成String字符串

    1.将集合转成String字符串 String s=""; for (int i = 0; i < numList.size(); i++) { if (s=="& ...

  8. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  9. impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)

    impala 四舍五入后转换成string后又变成一个double的数值解决(除不尽的情况)例如Query: select cast(round(2 / 3, 4)*100 as string)+-- ...

随机推荐

  1. 总结Flink状态管理和容错机制

    本文来自8月11日在北京举行的 Flink Meetup会议,分享来自于施晓罡,目前在阿里大数据团队部从事Blink方面的研发,现在主要负责Blink状态管理和容错相关技术的研发.   本文主要内容如 ...

  2. scrapy笔记

    1.关于请求url状态码重定向问题: from scrapy import Request handle_httpstatus_list = [404, 403, 500, 503, 521, 522 ...

  3. du -h排序

    du -sh * du -s /tmp/*|sort -nr|head -3

  4. plt实现动态画图

    用pycharm跑的没有出现动态线条的话: 1.点击setting,输入关键字Scien...搜索出Python Scientific, 在右侧去掉对勾(默认是勾选的),然后右下角Apply--OK, ...

  5. Codeforces 425E Sereja and Sets dp

    Sereja and Sets 我们先考虑对于一堆线段我们怎么求最大的不相交的线段数量. 我们先按 r 排序, 然后能选就选. 所以我们能想到我们用$dp[ i ][ j ]$表示已经选了 i 个线段 ...

  6. jenkins(2): jenkins定时构建项目

    参考:http://blog.sina.com.cn/s/blog_b5fe6b270102v7xo.html https://blog.csdn.net/xueyingqi/article/deta ...

  7. JMeter学习笔记2-图形界面简单介绍

    废话少说直接干活的给: 一.打开和运行JMeter,出现UI界面.如图下所示: 工具栏:常见操作的图标集合,有New(新建), Template(模板) ,Save(保存),Start(开始) ,St ...

  8. PHP远程下载图片,微信头像存到本地,本地图片转base64

    方法一(推荐): function download_remote_pic($url){ $header = [ 'User-Agent: Mozilla/5.0 (Windows NT 6.1; W ...

  9. Redis数据库 01概述| 五大数据类型

    1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...

  10. Python多继承之MRO算法

    MRO即Method Resolution Order   方法解析顺序,它的提出主要是为了解决Python中多继承时,当父类存在同名函数时,二义性的问题 下面先看一个例子: import inspe ...