最近遇到一个问题,数据库里面的数据存了一个多图字段和一个图片对应的排序,然后输出的时候需要按排序处理下。
当然,最容易想到的办法是遍历,然后添加,这次不想玩这么低级的代码,而且类似的需求项目中有好几个地方都有用到,就想着能不能写个通用的方法,
于是想到了泛型,写了下面这么个方法
/// <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
此方法用于数据结构化