none
BindingSource物件繫結資料速度問題. RRS feed

  • 問題

  • 請問各位前輩.

    var qry = from K1 in context.Product
                   orderby K1.ProductID
                   select K1;
    MessageBox.Show("1", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    productBindingSource.DataSource = qry;
    MessageBox.Show("2", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

    Product 裡有 20000多筆資料.
    表單一執行大約要等10幾秒.

    我加上 messagebox.show ,到 sqlserver   profiler 去看.

    發現 productBindingSource.DataSource = qry; 時, 不斷傳送 Select 指令到 Server.
    這樣是正常的嗎? 怎麼加快它的速度呢?

    2015年9月23日 上午 01:39

解答

所有回覆

  • 您可以考慮利用Skip和Take分段處理20000多筆資料, 請參考:C#/.NET Little Wonders: Skip() and Take()

    • 已標示為解答 congbow 2015年9月25日 上午 06:19
    2015年9月23日 上午 10:42
  •  我已用分段處理. 但還是不解為什麼執行到

    productBindingSource.DataSource = qry;

    時.會下 Select 命令20幾次. 

    2015年9月30日 上午 01:02
  • Linq 延遲執行與迭代的特性造成的吧, 所以你可以試著先 ToList 再餵給 BindingSource

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2015年9月30日 上午 01:43
    版主