using System;
using System.Data;
using System.Web;
using System.Text;
using System.Collections.Generic;
namespace Ant.Service.Utilities
{
///
/// DataTable数据转换类
///
public static class dtHelp
{
///
/// 将dt转化成Json数据
///
///
///
public static string DT2JSON(DataTable dt)
{
return DT2JSON(dt, 0, "recordcount", "table");
}
public static string DT2JSON(DataTable dt, int fromCount)
{
return DT2JSON(dt, fromCount, "recordcount", "table");
}
///
/// 将dt转化成Json数据
///
///
///
///
///
///
public static string DT2JSON(DataTable dt, int fromCount, string totalCountStr, string tbname)
{
return DT2JSON(dt, fromCount, "recordcount", "table", true);
}
///
/// 将dt转化成Json数据
///
///
///
///
///
///
public static string DT2JSON(DataTable dt, int fromCount, string totalCountStr, string tbname, bool formatData)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("\"" + totalCountStr + "\":" + dt.Rows.Count + ",\"" + tbname + "\": [");
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i > 0)
jsonBuilder.Append(",");
jsonBuilder.Append("{");
jsonBuilder.Append("\"no\":" + (fromCount + i + 1) + ",");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j > 0)
jsonBuilder.Append(",");
if (dt.Columns[j].DataType.Equals(typeof(DateTime)) && dt.Rows[i][j].ToString() != "")
jsonBuilder.Append("\"" + dt.Columns[j].ColumnName.ToLower() + "\": \"" + Convert.ToDateTime(dt.Rows[i][j].ToString()).ToString("yyyy-MM-dd HH:mm:ss") + "\"");
else if (dt.Columns[j].DataType.Equals(typeof(String)))
jsonBuilder.Append("\"" + dt.Columns[j].ColumnName.ToLower() + "\": \"" + dt.Rows[i][j].ToString().Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\t", " ").Replace("\r", " ").Replace("\n", "
") + "\"");
else
jsonBuilder.Append("\"" + dt.Columns[j].ColumnName.ToLower() + "\": \"" + dt.Rows[i][j].ToString() + "\"");
}
jsonBuilder.Append("}");
}
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
///
/// 将DataTable转换为list
///
///
///
///
public static List DT2List(DataTable dt)
{
if (dt == null)
return null;
List result = new List();
for (int j = 0; j < dt.Rows.Count; j++)
{
T _t = (T)Activator.CreateInstance(typeof(T));
System.Reflection.PropertyInfo[] propertys = _t.GetType().GetProperties();
foreach (System.Reflection.PropertyInfo pi in propertys)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
// 属性与字段名称一致的进行赋值
if (pi.Name.ToLower().Equals(dt.Columns[i].ColumnName.ToLower()))
{
if (dt.Rows[j][i] != DBNull.Value)
{
if (pi.PropertyType.ToString() == "System.Int32")
{
pi.SetValue(_t, Int32.Parse(dt.Rows[j][i].ToString()), null);
}
else if (pi.PropertyType.ToString() == "System.DateTime")
{
pi.SetValue(_t, Convert.ToDateTime(dt.Rows[j][i].ToString()), null);
}
else if (pi.PropertyType.ToString() == "System.Boolean")
{
pi.SetValue(_t, Convert.ToBoolean(dt.Rows[j][i].ToString()), null);
}
else if (pi.PropertyType.ToString() == "System.Single")
{
pi.SetValue(_t, Convert.ToSingle(dt.Rows[j][i].ToString()), null);
}
else if (pi.PropertyType.ToString() == "System.Double")
{
pi.SetValue(_t, Convert.ToDouble(dt.Rows[j][i].ToString()), null);
}
else
{
pi.SetValue(_t, dt.Rows[j][i].ToString(), null);
}
}
else
pi.SetValue(_t, "", null);//为空,但不为Null
break;
}
}
}
result.Add(_t);
}
return result;
}
}
}