实现从一个实体向另一个实体拷贝。
View Code
1 //By:Jxb 2 public class EntityUtil 3 { 4 5 /// <summary> 6 /// 从一个对象中拷贝数据到另一个对象(属性名一致的才会拷贝,用于泛型实体) 7 /// </summary> 8 /// <param name="source"></param> 9 /// <param name="destination"></param> 10 public static void CloneDataList<TSource, TDestination>(List<TSource> sourcelist, List<TDestination> destinationlist) 11 { 12 if (sourcelist != null) 13 { 14 for (int i = 0; i < sourcelist.Count; i++) 15 { 16 destinationlist.Add(Activator.CreateInstance<TDestination>()); 17 for (int x = 0; x < destinationlist.Count; x++) 18 { 19 PropertyInfo[] destinationProperties = destinationlist[destinationlist.Count - 1].GetType().GetProperties(); 20 PropertyInfo[] sourceProperties = sourcelist[i].GetType().GetProperties(); 21 22 foreach (PropertyInfo property in destinationProperties) 23 { 24 PropertyInfo sourceProperty = sourcelist[i].GetType().GetProperty(property.Name); 25 if (sourceProperty != null) 26 { 27 object value = sourceProperty.GetValue(sourcelist[i], null); 28 try 29 { 30 property.SetValue(destinationlist[destinationlist.Count - 1], value, null); 31 } 32 catch { } 33 } 34 } 35 break; 36 } 37 } 38 } 39 } 40 41 42 /// <summary> 43 /// 从一个对象中拷贝数据到另一个对象(属性名一致的才会拷贝) 44 /// </summary> 45 /// <param name="source"></param> 46 /// <param name="destination"></param> 47 public static void CloneData<TSource, TDestination>(TSource source, TDestination destination) 48 { 49 if (source != null) 50 { 51 PropertyInfo[] destinationProperties = destination.GetType().GetProperties(); 52 PropertyInfo[] sourceProperties = source.GetType().GetProperties(); 53 foreach (PropertyInfo property in destinationProperties) 54 { 55 PropertyInfo sourceProperty = source.GetType().GetProperty(property.Name); 56 if (sourceProperty != null) 57 { 58 object value = sourceProperty.GetValue(source, null); 59 try 60 { 61 property.SetValue(destination, value, null); 62 } 63 catch { } 64 } 65 } 66 } 67 } 68 69 /// <summary> 70 /// 从一个对象中拷贝数据到另一个对象(属性名一致的才会拷贝,用于泛型实体) 71 /// </summary> 72 /// <param name="source"></param> 73 /// <param name="destination"></param> 74 public static void CloneData<TSource, TDestination>(List<TSource> sourcelist, List<TDestination> destinationlist) 75 { 76 if (sourcelist != null) 77 { 78 for (int i = 0; i < sourcelist.Count; i++) 79 { 80 destinationlist.Add(Activator.CreateInstance<TDestination>()); 81 for (int x = 0; x < destinationlist.Count; x++) 82 { 83 PropertyInfo[] destinationProperties = destinationlist[destinationlist.Count - 1].GetType().GetProperties(); 84 PropertyInfo[] sourceProperties = sourcelist[i].GetType().GetProperties(); 85 86 foreach (PropertyInfo property in destinationProperties) 87 { 88 PropertyInfo sourceProperty = sourcelist[i].GetType().GetProperty(property.Name); 89 if (sourceProperty != null) 90 { 91 object value = sourceProperty.GetValue(sourcelist[i], null); 92 try 93 { 94 property.SetValue(destinationlist[destinationlist.Count - 1], value, null); 95 } 96 catch { } 97 } 98 } 99 break; 100 } 101 } 102 } 103 } 104 105 106 107 /// <summary> 108 /// 将实体里的属性与值,拷贝出来(如果值超过128个字符,则截取) 109 /// </summary> 110 /// <param name="destination"></param> 111 public static string CloneDataToString(object destination) 112 { 113 StringBuilder sb = new StringBuilder(); 114 PropertyInfo[] destinationProperties = destination.GetType().GetProperties(); 115 foreach (PropertyInfo item in destinationProperties) 116 { 117 string name = item.Name.Replace("\r\n", ""); 118 object value = item.GetValue(destination, null); 119 120 if (item.PropertyType.IsValueType || item.PropertyType.Name.StartsWith("String")) 121 { 122 if (value != null) 123 { 124 if (value.ToString().Length > 128) 125 { 126 value = value.ToString().Substring(0, 128); 127 } 128 } 129 sb.Append(string.Format("{0}:{1},", name, value)); 130 } 131 } 132 if (sb.Length > 0) 133 { 134 sb.Remove(sb.Length - 1, 1); 135 } 136 return sb.ToString(); 137 }