我想最小化从列表中检索单个唯一元素所需的时间.哪一个是最快的方法Find,Single和First?请注意,搜索键是唯一的ID.
Mar*_*ell 31
该最快(为一大组)将让他们键控反对Dictionary<TKey,TValue>并使用它.
Single并First做不同的事情; Single总是迭代整个集合,即使它在列表的开头找到它,因此First通常比Single它短路时更快.
Jon*_*eet 27
First比Single它更快,因为它可以在找到匹配后立即终止.另一方面,这意味着它不验证只有一个项与谓词匹配.
Find应该尽可能快First,但不太便携,因为它只适用于列表.如果您一般使用LINQ,我会尝试坚持使用LINQ运算符,除非使用替代方案有明确的好处.
正如马克所说,如果你要经常这样做,你应该使用Dictionary<,>.您可以使用ToDictionary操作员轻松完成此操作:
var dictionary = list.ToDictionary(x => x.Id);
// Now you can look up by ID really quickly
Run Code Online (Sandbox Code Playgroud)
显然,创建词典需要一些时间才能开始,所以你只需要做到这一点,如果你正在寻找多次.
| 归档时间: |
|
| 查看次数: |
8236 次 |
| 最近记录: |