C# 關於數據量大,Contains 方法執行較慢的問題!


問題描述:

  有一個數據集合,數據量有幾萬條、十幾萬條,類型是 List<a'> ,里面有一個字段是部門id(departmentid),假如說現在有很多個公司,有些公司有多個部門,在循環遍歷獲取每個公司的所有部門對應的記錄時,速度非常慢,

如果集合包含10 萬條記錄,有一千多個公司,每一個公司可能都需要花上 1 秒甚至超過 1 秒的時間,把所有公司遍歷一下需要幾十分鍾的時間。

解決方法:

  因為實在是太慢了,所以我就想有沒有效率高、速度快的方法?換種寫法會不會解決這個問題?即,不使用 Contains 方法!

  后來,我直接遍歷一個公司下的所有部門,然后獲取與部門id相等的記錄。結果,數據差不多秒出,效率提升了幾百倍甚至近千倍!

參考代碼:

                    //獲取該客戶對應的depids
                    var thedepids = depls.Where(d => d.employerid == c.employerid).Select(d => d.accountid);
//var count = buylogls.Count(l => thedepids.Contains(l.departmentid)); //棄用的寫法

            //高效的寫法 int count = 0; foreach(var id in thedepids) { count += buylogls.Count(l => l.departmentid == id); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM