C#分享一种比list循环快的方法ToDictionary
本帖最后由 liu8359 于 2020-12-10 16:05 编辑只有数据量大时才会有效果(几万条以上)
C#list循环时由于数据量太大,循环起来太慢了。
把list转成Dictionary(字典)后循环,效率会提升很快。
实体
public class Model
{
public string ID { get; set; }
public string Name { get; set; }
public int Level { get; set; }
}
list-> Dictionary -> for循环找到传入key值model
List<Model> list = new List<Model>();
Dictionary<string, Model> listDic = list.ToDictionary(t => t.ID);
var model = new Model();
if (listDic .Keys.Contains(key))
model = listDic ;
还有更快的C#循环方法吗{:301_982:} 如果是需要经常用到查询,建议直接使用Dictionary,这样处理速度要比list快的多
list的复杂度为O(n),Dictionary使用hash,为O(1)。
使用List,再去转Dictionary,如楼上测试结果,估计时间都花在了转换时间上,没有必要多此一举。 我写了测试代码List中存在5000条字符串,直接用List.Find()查找只需要0.4ms,而你这种还需要把list数据转换为字典然后再取值,大量字典转换更浪费时间 能少写一一句就少写一句:lol 万神fake 发表于 2020-12-10 16:14
能少写一一句就少写一句
哈哈,复制就行 {:1_893:}我基本没使用字典,提供新的思路了 数组最快,unsafe 指针操作 飞上天 厉害,楼主,感谢分享 厉害,楼主,感谢分享!!学到了 是很好的思路,谢谢楼主分享 这个并不是循环呀,对于List直接进行find()不就可以了?
页:
[1]
2