使用.NET 2.0将DataTable转换为List的最快方法

时间:2011-12-26 15:04:38

标签: c# .net-2.0

我刚发现这个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;
        }
    }
}

1 个答案:

答案 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;