C#中Linq的Join比Where(m=>arr..Contains(m.id))的效率更高
开发工程中,经常遇到在集合中,根据另一个集合取出一些数据。
我之前常用的做法如下:
List<MyInfo> list = GetList(); // 约2W数据 int[] idArr = GetIDs();// 约几百
之前也一直没有去考虑效率问题。使用如下:
list.Where(m => idArr.Contains(m.id)).ToList();
通过条件,判断集合对象的id在数组中,逻辑没有问题,很正常的思维。(我的测试耗时约50ms)
但是,如果采用Join就会的到成倍的速度提升,代码如下:
list.Join(idArr, m => m.id, n => n, (m, n) => m).ToList();
我们换个思路,将idArr看做一个连接对象,用inner join方式连接,发现耗时缩短(我的测试与5ms)
由此可见:以上的使用情况,C#中Linq的Join比Where(m=>arr..Contains(m.id))的效率更高。
=============================================================================
文章结束,如有问题请留言,感谢!٩( 'ω' )و
=============================================================================
文章结束,如有问题请留言,感谢!٩( 'ω' )و
=============================================================================