【发布时间】:2011-12-21 22:39:52
【问题描述】:
我已经开发了一个应用程序,它在任何地方都返回DataTable。
现在我的客户想要转换(使用服务堆栈的某些部分),所以我需要在我的应用程序中返回 DTO (objects)。
我不想更改我现有的存储过程,甚至不想尽可能多地使用 LINQ(我不太了解 LINQ)。
对于小功能,我可以使用 Linq 没问题。
我的问题是:如何将我的DataTable 更改为该类的对象?
示例代码如下:
string s = DateTime.Now.ToString();
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
for (int i = 0; i < 5000000; i++)
{
DataRow dr = dt.NewRow();
dr["id"] = i.ToString();
dr["name"] = "name" + i.ToString();
dt.Rows.Add(dr);
dt.AcceptChanges();
}
List<Class1> clslist = new List<Class1>();
for (int i = 0; i < dt.Rows.Count; i++)
{
Class1 cls = new Class1();
cls.id = dt.Rows[i]["id"].ToString();
cls.name = dt.Rows[i]["name"].ToString();
clslist.Add(cls);
}
Response.Write(s);
Response.Write("<br>");
Response.Write(DateTime.Now.ToString());
我知道,以上方法比较耗时,我正在尝试寻找替代解决方案。
是否有任何替代方法(我猜是 LINQ to DataTable)直接将表的行转换为List<Class1>?
这样我就可以在我的服务堆栈中返回对象并继续。
【问题讨论】:
-
只是想补充一点,您在上面为从 DataTable 填充类所做的工作并不慢,事实上,只要我们有 DataTable 可以使用,linq 或其他任何东西都不会它更快,它可能会给你一个更简单的代码,它不会要求你编写一个循环而是实现它自己。
标签: c# asp.net .net linq datatable