在DataTable中檢索資料的幾種方法的比較

來源:互聯網
上載者:User

     .Net中的DataTable是一種非常好的儲存資料的容器,它像一個移動資料庫一樣。

     有時候,DataTable中會被存放大量的資料,但是對於你來說並不是所有的資料都是有用的,這時面對那些資料就要快速的提取出自己需要的。在DataTable中提取資料的方法有以下幾種:

1、使用for迴圈語句;2、使用foreach迴圈語句;3、使用DataTable類中內建的select()方法。

首先看一段代碼:

        DataTable dt = new DataTable();
        dt.Columns.Add("I_ID", typeof(string));

        DateTime dt1 = DateTime.Now;

        for (int i = 0; i < 1000000; i++)
        {
            dt.Rows.Add(dt.NewRow());
            dt.Rows[i]["I_ID"] = i.ToString();
        }

        TimeSpan sp = DateTime.Now - dt1;
        string sp1 = sp.TotalMilliseconds.ToString();

        DateTime dt2 = DateTime.Now;
        DataRow[] drs1 = dt.Select("I_ID='999999'");
        sp = DateTime.Now - dt2;
        string sp2 = sp.TotalMilliseconds.ToString();

        DateTime dt3 = DateTime.Now;
        DataRow[] drs2 = dt.Select("I_ID='999999'", "I_ID DESC");
        sp = DateTime.Now - dt3;
        string sp3 = sp.TotalMilliseconds.ToString();

        DateTime dt4 = DateTime.Now;
        DataRow[] drs3 = dt.Select("I_ID='999999'", "I_ID DESC", DataViewRowState.CurrentRows);
        sp = DateTime.Now - dt4;
        string sp4 = sp.TotalMilliseconds.ToString();

        DateTime dt5 = DateTime.Now;
        DataRow[] drs4 = dt.Select("I_ID='999999'", "I_ID ASC");
        sp = DateTime.Now - dt5;
        string sp5 = sp.TotalMilliseconds.ToString();

        DateTime dt6 = DateTime.Now;
        for (int i = 0; i < 1000000; i++)
        {
            if (dt.Rows[i]["I_ID"].Equals("999999"))
            {
                break;
            }
        }
        sp = DateTime.Now - dt6;
        string sp6 = sp.TotalMilliseconds.ToString();

        DateTime dt7 = DateTime.Now;
        foreach (DataRow dr in dt.Rows)
        {
            if (dr["I_ID"].Equals("999999"))
            {
                break;
            }
        }
        sp = DateTime.Now - dt7;
        string sp7 = sp.TotalMilliseconds.ToString();

        Response.Write(sp1 + "&nbsp;" + sp2 + "&nbsp;" + sp3 + "&nbsp;" + sp4 + "&nbsp;" + sp5 + "&nbsp;" + sp6 + "&nbsp;" + sp7);

然後再看一下結果:

13943.3133    17093.2977     0     0    0    1621.3155     386.0275

通過顯示的結果我們應該明白哪一種方法的效率最高了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.