dtHelp.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System;
  2. using System.Data;
  3. using System.Web;
  4. using System.Text;
  5. using System.Collections.Generic;
  6. namespace Ant.Service.Utilities
  7. {
  8. /// <summary>
  9. /// DataTable数据转换类
  10. /// </summary>
  11. public static class dtHelp
  12. {
  13. /// <summary>
  14. /// 将dt转化成Json数据
  15. /// </summary>
  16. /// <param name="dt"></param>
  17. /// <returns></returns>
  18. public static string DT2JSON(DataTable dt)
  19. {
  20. return DT2JSON(dt, 0, "recordcount", "table");
  21. }
  22. public static string DT2JSON(DataTable dt, int fromCount)
  23. {
  24. return DT2JSON(dt, fromCount, "recordcount", "table");
  25. }
  26. /// <summary>
  27. /// 将dt转化成Json数据
  28. /// </summary>
  29. /// <param name="dt"></param>
  30. /// <param name="fromCount"></param>
  31. /// <param name="totalCountStr"></param>
  32. /// <param name="tbname"></param>
  33. /// <returns></returns>
  34. public static string DT2JSON(DataTable dt, int fromCount, string totalCountStr, string tbname)
  35. {
  36. return DT2JSON(dt, fromCount, "recordcount", "table", true);
  37. }
  38. /// <summary>
  39. /// 将dt转化成Json数据
  40. /// </summary>
  41. /// <param name="dt"></param>
  42. /// <param name="fromCount"></param>
  43. /// <param name="totalCountStr"></param>
  44. /// <param name="tbname"></param>
  45. /// <returns></returns>
  46. public static string DT2JSON(DataTable dt, int fromCount, string totalCountStr, string tbname, bool formatData)
  47. {
  48. StringBuilder jsonBuilder = new StringBuilder();
  49. jsonBuilder.Append("\"" + totalCountStr + "\":" + dt.Rows.Count + ",\"" + tbname + "\": [");
  50. for (int i = 0; i < dt.Rows.Count; i++)
  51. {
  52. if (i > 0)
  53. jsonBuilder.Append(",");
  54. jsonBuilder.Append("{");
  55. jsonBuilder.Append("\"no\":" + (fromCount + i + 1) + ",");
  56. for (int j = 0; j < dt.Columns.Count; j++)
  57. {
  58. if (j > 0)
  59. jsonBuilder.Append(",");
  60. if (dt.Columns[j].DataType.Equals(typeof(DateTime)) && dt.Rows[i][j].ToString() != "")
  61. jsonBuilder.Append("\"" + dt.Columns[j].ColumnName.ToLower() + "\": \"" + Convert.ToDateTime(dt.Rows[i][j].ToString()).ToString("yyyy-MM-dd HH:mm:ss") + "\"");
  62. else if (dt.Columns[j].DataType.Equals(typeof(String)))
  63. jsonBuilder.Append("\"" + dt.Columns[j].ColumnName.ToLower() + "\": \"" + dt.Rows[i][j].ToString().Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\t", " ").Replace("\r", " ").Replace("\n", "<br/>") + "\"");
  64. else
  65. jsonBuilder.Append("\"" + dt.Columns[j].ColumnName.ToLower() + "\": \"" + dt.Rows[i][j].ToString() + "\"");
  66. }
  67. jsonBuilder.Append("}");
  68. }
  69. jsonBuilder.Append("]");
  70. return jsonBuilder.ToString();
  71. }
  72. /// <summary>
  73. /// 将DataTable转换为list
  74. /// </summary>
  75. /// <typeparam name="T"></typeparam>
  76. /// <param name="dt"></param>
  77. /// <returns></returns>
  78. public static List<T> DT2List<T>(DataTable dt)
  79. {
  80. if (dt == null)
  81. return null;
  82. List<T> result = new List<T>();
  83. for (int j = 0; j < dt.Rows.Count; j++)
  84. {
  85. T _t = (T)Activator.CreateInstance(typeof(T));
  86. System.Reflection.PropertyInfo[] propertys = _t.GetType().GetProperties();
  87. foreach (System.Reflection.PropertyInfo pi in propertys)
  88. {
  89. for (int i = 0; i < dt.Columns.Count; i++)
  90. {
  91. // 属性与字段名称一致的进行赋值
  92. if (pi.Name.ToLower().Equals(dt.Columns[i].ColumnName.ToLower()))
  93. {
  94. if (dt.Rows[j][i] != DBNull.Value)
  95. {
  96. if (pi.PropertyType.ToString() == "System.Int32")
  97. {
  98. pi.SetValue(_t, Int32.Parse(dt.Rows[j][i].ToString()), null);
  99. }
  100. else if (pi.PropertyType.ToString() == "System.DateTime")
  101. {
  102. pi.SetValue(_t, Convert.ToDateTime(dt.Rows[j][i].ToString()), null);
  103. }
  104. else if (pi.PropertyType.ToString() == "System.Boolean")
  105. {
  106. pi.SetValue(_t, Convert.ToBoolean(dt.Rows[j][i].ToString()), null);
  107. }
  108. else if (pi.PropertyType.ToString() == "System.Single")
  109. {
  110. pi.SetValue(_t, Convert.ToSingle(dt.Rows[j][i].ToString()), null);
  111. }
  112. else if (pi.PropertyType.ToString() == "System.Double")
  113. {
  114. pi.SetValue(_t, Convert.ToDouble(dt.Rows[j][i].ToString()), null);
  115. }
  116. else
  117. {
  118. pi.SetValue(_t, dt.Rows[j][i].ToString(), null);
  119. }
  120. }
  121. else
  122. pi.SetValue(_t, "", null);//为空,但不为Null
  123. break;
  124. }
  125. }
  126. }
  127. result.Add(_t);
  128. }
  129. return result;
  130. }
  131. }
  132. }