You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							2.3 KiB
						
					
					
				| using System; | |
| using System.Collections.ObjectModel; | |
| using System.Data; | |
| using System.Reflection; | |
| 
 | |
| namespace DyeingComputer.UserClass | |
| { | |
|     internal class DataTableToObservableCollection //数据表到可观察集合 | |
|     { | |
|         public ObservableCollection<T> ToObservableCollection<T>(DataTable dt) where T : class, new() | |
|         { | |
|             Type t = typeof(T); | |
|             PropertyInfo[] propertys = t.GetProperties(); | |
|             ObservableCollection<T> lst = new ObservableCollection<T>(); | |
|             string typeName = string.Empty; | |
|             foreach (DataRow dr in dt.Rows) | |
|             { | |
|                 T entity = new T(); | |
|                 foreach (PropertyInfo pi in propertys) | |
|                 { | |
|                     typeName = pi.Name; | |
|                     if (dt.Columns.Contains(typeName)) | |
|                     { | |
|                         if (!pi.CanWrite) continue; | |
|                         object value = dr[typeName]; | |
|                         if (value == DBNull.Value) continue; | |
|                         if (pi.PropertyType == typeof(string)) | |
|                         { | |
|                             pi.SetValue(entity, value.ToString(), null); | |
|                         } | |
|                         else if (pi.PropertyType == typeof(int) || pi.PropertyType == typeof(int?)) | |
|                         { | |
|                             pi.SetValue(entity, int.Parse(value.ToString()), null); | |
|                         } | |
|                         else if (pi.PropertyType == typeof(DateTime?) || pi.PropertyType == typeof(DateTime)) | |
|                         { | |
|                             pi.SetValue(entity, DateTime.Parse(value.ToString()), null); | |
|                         } | |
|                         else if (pi.PropertyType == typeof(float)) | |
|                         { | |
|                             pi.SetValue(entity, float.Parse(value.ToString()), null); | |
|                         } | |
|                         else if (pi.PropertyType == typeof(double)) | |
|                         { | |
|                             pi.SetValue(entity, double.Parse(value.ToString()), null); | |
|                         } | |
|                         else | |
|                         { | |
|                             pi.SetValue(entity, value, null); | |
|                         } | |
|                     } | |
|                 } | |
|                 lst.Add(entity); | |
|             } | |
|             return lst; | |
|         } | |
| 
 | |
|     } | |
| }
 | |
| 
 |