您的位置:首页 > Web前端 > JavaScript

【原】超简单类型转换(DataTable --> List/JSON)的实现

2012-11-11 00:51 423 查看
背景:

开发工作中经常需要类型的转换,比如DataTable转换为List、或是DataTable转换为JSON等等,

每次都重复的写相同的代码,比如:把实体类的字段属性一个一个的列出来,从DataTabel中把值取出来赋上,

真的好麻烦 (*=*)

思考:

1)DataTable转换为List,主要是使用反射,遍历实体类的属性,和DataTabel中的列进行对比并赋值

2)DataTable转换为JSON,主要是拼接JSON串

实践:

参考了网上很多前辈的思路和实现,制作了一个ConvertHelper类,感谢各位前辈 ^_^

调用转换处理

/// <summary>
/// DataTable-->List测试
/// </summary>
private static void MockDataTableConvertToList()
{
// 定义时间起点
TimeSpan tsStart = new TimeSpan(DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond);

// 変換処理
IList<UserInfo> users = ConvertHelper<UserInfo>.DataTableConvertToList(MockData());

// 定义时间终点
TimeSpan tsEnd = new TimeSpan(DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond);

// 计算耗时
TimeSpan ts = tsStart.Subtract(tsEnd).Duration();

Console.WriteLine(string.Format("DataTable-->List 変換耗時:{0}", ts.ToString()));

//foreach (var user in users)
//{
//    Console.WriteLine("{0} : {1} - {2};", user.UserID, user.UserName, user.Salary);
//}
}

/// <summary>
/// DataTable-->Json测试
/// </summary>
private static void MockDataTableConvertToJson()
{
// 定义时间起点
TimeSpan tsStart = new TimeSpan(DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond);

// 変換処理
string jsonString = ConvertHelper<UserInfo>.DataTableConvertToJson(MockData());

// 定义时间终点
TimeSpan tsEnd = new TimeSpan(DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTime.Now.Millisecond);

// 计算耗时
TimeSpan ts = tsStart.Subtract(tsEnd).Duration();

Console.WriteLine(string.Format("DataTable-->Json 変換耗時:{0}", ts.ToString()));

//Console.WriteLine(jsonString);
}


两句代码完成

IList<UserInfo> users = ConvertHelper<UserInfo>.DataTableConvertToList(MockData());

string jsonString = ConvertHelper<UserInfo>.DataTableConvertToJson(MockData());


可以看到转换后的效果

前几条数据是DataTable转换为List的效果,后一条数据是DataTable转换为JSON的效果



再贴一张类型转换时间的测试结果吧,50w条记录转换10秒左右



是不是很简单呢?

如果您有好的实现或是意见,别忘了告诉我哦 ^_^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: