using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Drawing; using System.IO; using System.Reflection; using System.Text; namespace CSFrameworkV5.Core.Common { public static class DataConverter { //图片 转为 base64编码的文本 public static string ImgToBase64String(string Imagefilename) { Bitmap bmp = null; try { using (bmp = new Bitmap(Imagefilename)) { using (var ms = new MemoryStream()) { bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); var arr = new byte[ms.Length]; ms.Position = 0; ms.Read(arr, 0, (int)ms.Length); ms.Close(); return Convert.ToBase64String(arr); } } } catch (Exception ex) { return null; } finally { if (bmp != null) bmp.Dispose(); } } //base64编码的文本 转为 图片 public static Bitmap Base64StringToImage(string inputStr) { try { var arr = Convert.FromBase64String(inputStr); var ms = new MemoryStream(arr); return new Bitmap(ms); } catch { return null; } } //base64编码的文本 转为 图片 public static bool Base64StringToFile(string inputStr, string FilePath, string FileName) { FileStream fs = null; try { var extension = Path.GetExtension(FilePath + "/" + FileName); var SaveFileName = Guid.NewGuid().ToStringEx() + extension; fs = File.Create(FilePath + FileName); var arr = Convert.FromBase64String(inputStr); using (var ms = new MemoryStream(arr)) { ms.WriteTo(fs); } return true; } catch { return false; } finally { if (fs != null) { fs.Close(); fs.Dispose(); fs = null; } } } /// /// 返回时间戳,秒 /// /// /// public static long GetUtcTrick(DateTime time) { var fs = new DateTimeOffset(time); var trick = (fs.UtcTicks - 621355968000000000) / 10000000; //秒值 return trick; } public static IEnumerable ConvertObject(DataTable dt) where T : new() { var v = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); var Fields = new List(); foreach (var s in v) if (dt.Columns.Contains(s.Name)) Fields.Add(s); foreach (DataRow dr in dt.Rows) { var t = new T(); foreach (var s in Fields) { if (Equals(dr[s.Name], DBNull.Value)) continue; var tv = System.ComponentModel.TypeDescriptor .GetConverter(s.PropertyType) .ConvertFromString(dr[s.Name].ToStringEx()); s.SetValue(t, tv, null); } yield return t; } } public static T ConvertObject(DataRow dr) where T : new() { var v = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); var t = new T(); foreach (var s in v) if (dr.Table.Columns.Contains(s.Name)) { if (Equals(dr[s.Name], DBNull.Value)) continue; { var tv = System.ComponentModel.TypeDescriptor .GetConverter(s.PropertyType) .ConvertFromString(dr[s.Name].ToStringEx()); s.SetValue(t, tv, null); } } return t; } public static T ConvertObjectIgnoreCase( Dictionary dic) where T : new() { var v = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); var fr = new Dictionary(); foreach (var key in dic.Keys) fr.Add(key.ToLower(), key); var t = new T(); foreach (var s in v) if (fr.ContainsKey(s.Name.ToLower())) { var key = fr[s.Name.ToLower()]; var value = dic[key]; if (Equals(value, DBNull.Value) || value == null) continue; try { var tv = System.ComponentModel.TypeDescriptor .GetConverter(s.PropertyType) .ConvertFromString(value.ToStringEx()); s.SetValue(t, tv, null); } catch { s.SetValue(t, value, null); } } return t; } public static T Convert2Object(DbDataReader row) where T : new() { var t = new T(); var dic = new Dictionary(); var type = typeof(T); string fname; object tv; object fvalue; for (var i = 0; i < row.FieldCount; i++) { fname = row.GetName(i); fvalue = row.GetValue(i); dic.Add(fname.ToLower(), fvalue); var p = type.GetProperty(fname, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); if (p != null) { if (string.IsNullOrEmpty(fvalue.ToStringEx())) tv = p.PropertyType.IsValueType ? Activator.CreateInstance(p.PropertyType) : null; else tv = System.ComponentModel.TypeDescriptor .GetConverter(p.PropertyType) .ConvertFromString(fvalue.ToStringEx()); p.SetValue(t, tv, null); } } return t; } public static T GetKey(Dictionary data, string key) { try { if (data.ContainsKey(key)) { var tv = System.ComponentModel.TypeDescriptor .GetConverter(typeof(T)) .ConvertFrom(data[key].ToStringEx()); return (T)tv; } else { return default; } } catch //(Exception ex) { return default; } } public static string GetTableColumnValue(DataTable dt, string ColumnName) { var str = new StringBuilder(); foreach (DataRow dr in dt.Rows) str.Append("," + dr[ColumnName]); if (str.Length > 0) str.Remove(0, 1); return str.ToStringEx(); } } }