我刚发现这个post,我们与用户几乎有相同的场景,但我只使用.NET 2.0框架,想知道是否有更好更快的实现,使用下面的代码,将数据表转换为名单。
提前致谢。
namespace DataTableToListTest
{
public partial class MainForm : Form
{
// Just a sample class
class MyType
{
private int _foo;
private string _bar;
public MyType(int foo, string bar)
{
_foo = foo;
_bar = bar;
}
public int Foo
{
get { return _foo; }
set { _foo = value; }
}
public string Bar
{
get { return _bar; }
set { _bar = value; }
}
}
public MainForm()
{
InitializeComponent();
dataGridView1.DataSource = GetDataSource();
}
List<MyType> GetDataSource()
{
DataTable table = GetTable();
for (int i = 0; i < 5000; i++)
table.Rows.Add(i, "Row " + i);
List<MyType> data = new List<MyType>(table.Rows.Count);
foreach (DataRow row in table.Rows)
data.Add(new MyType((int)row[0], (string)row[1]));
return data;
}
// Suppose this method queries the database
DataTable GetTable()
{
DataTable table = new DataTable();
table.Columns.Add("Foo", typeof(int));
table.Columns.Add("Bar", typeof(string));
return table;
}
}
}
答案 0 :(得分:2)
我想不出任何其他优化
int count = table.Rows.Count;
List<MyType> data = new List<MyType>(count);
for(int i = 0 ; i <count; i ++)
{
DataRow row = tables.Rows[i];
data.Add(new MyType((int)row[0], (string)row[1]));
}
return data;