|  |  | 
 |  |  | using System; | 
 |  |  | using Newtonsoft.Json; | 
 |  |  | using System; | 
 |  |  | using System.Collections; | 
 |  |  | using System.Collections.Generic; | 
 |  |  | using System.ComponentModel; | 
 |  |  | using System.Data; | 
 |  |  | using System.Linq; | 
 |  |  | using System.Reflection; | 
 |  |  | 
 |  |  |                 List<T> list = new List<T>(); | 
 |  |  |                 if (ds.Tables[0].Rows.Count > 0) | 
 |  |  |                 { | 
 |  |  |                     foreach (DataRow row in ds.Tables[0].Rows)  | 
 |  |  |                     foreach (DataRow row in ds.Tables[0].Rows) | 
 |  |  |                     { | 
 |  |  |                         list.Add(row.Put(new T())); | 
 |  |  |                     } | 
 |  |  | 
 |  |  |             } | 
 |  |  |             return $"update {table} set {strSet} where 1=1 {condition}"; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// å°Listè½¬æ¢æDataTable | 
 |  |  |         /// </summary> | 
 |  |  |         /// <typeparam name="T"></typeparam> | 
 |  |  |         /// <param name="data"></param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static DataTable ToDataTable<T>(this IList<T> data) | 
 |  |  |         { | 
 |  |  |             PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T)); | 
 |  |  |             DataTable dt = new DataTable(); | 
 |  |  |             for (int i = 0; i < properties.Count; i++) | 
 |  |  |             { | 
 |  |  |                 PropertyDescriptor property = properties[i]; | 
 |  |  |                 dt.Columns.Add(property.Name, property.PropertyType); | 
 |  |  |             } | 
 |  |  |             object[] values = new object[properties.Count]; | 
 |  |  |             foreach (T item in data) | 
 |  |  |             { | 
 |  |  |                 for (int i = 0; i < values.Length; i++) | 
 |  |  |                 { | 
 |  |  |                     values[i] = properties[i].GetValue(item); | 
 |  |  |                 } | 
 |  |  |                 dt.Rows.Add(values); | 
 |  |  |             } | 
 |  |  |             return dt; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         /// <summary> | 
 |  |  |         /// å°List转æ¢ä¸ºDataTable | 
 |  |  |         /// </summary> | 
 |  |  |         /// <param name="list">è¯·æ±æ°æ®</param> | 
 |  |  |         /// <returns></returns> | 
 |  |  |         public static DataTable ListToDataTable<T>(List<T> list) | 
 |  |  |         { | 
 |  |  |             //å建ä¸ä¸ªå为"tableName"ç空表 | 
 |  |  |             DataTable dt = new DataTable("tableName"); | 
 |  |  |  | 
 |  |  |             //å建传å
¥å¯¹è±¡åç§°çå | 
 |  |  |             foreach (var item in list.FirstOrDefault().GetType().GetProperties()) | 
 |  |  |             { | 
 |  |  |                 dt.Columns.Add(item.Name); | 
 |  |  |             } | 
 |  |  |             //循ç¯åå¨ | 
 |  |  |             foreach (var item in list) | 
 |  |  |             { | 
 |  |  |                 //æ°å è¡ | 
 |  |  |                 DataRow value = dt.NewRow(); | 
 |  |  |                 //æ ¹æ®DataTableä¸çå¼ï¼è¿è¡å¯¹åºçèµå¼ | 
 |  |  |                 foreach (DataColumn dtColumn in dt.Columns) | 
 |  |  |                 { | 
 |  |  |                     int i = dt.Columns.IndexOf(dtColumn); | 
 |  |  |                     //åºå
å
ç´ ï¼ç´æ¥å¤å¶ï¼å¯¹è±¡ç±»åçï¼è¿è¡åºåå | 
 |  |  |                     if (value.GetType().IsPrimitive) | 
 |  |  |                     { | 
 |  |  |                         value[i] = item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item); | 
 |  |  |                     } | 
 |  |  |                     else | 
 |  |  |                     { | 
 |  |  |                         value[i] = JsonConvert.SerializeObject(item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item)); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 dt.Rows.Add(value); | 
 |  |  |             } | 
 |  |  |             return dt; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |