微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 用于内存中集合的Linq性能

我有一个列表:集合用户有大约100K的用户记录(所有用户对象从数据库中完全加载,包括Bio,名字,姓氏等字段).此应用程序从应用程序启动时从数据库获取并保存在内存中.

然后我有以下代码

User cachedUser = users.FirstOrDefault(x => string.Equals(x.UserName,username,StringComparison.CurrentCultureIgnoreCase));

我用它来从这个集合中获取用户.但不知何故,我注意到这个操作非常慢.使用Linq查询大型对象的内存集合时是否存在性能问题?我是否应该在每次想要获得用户调用数据库

解决方法

如果你想优化你的响应时间,你可以创建一个字典< T,U>并在以下内容搜索用户
Dictionary<string,User> usersDictionary = new <Dictionary<string,User>(StringComparer.CurrentCultureIgnoreCase);

    // After querying the users from the DB add them to the dictionary             
    usersDictionary.Add(user.UserName,user);

    // Then when you need to retrieve a user
    User retrieveUser = null; 
    usersDictionary.TryGetValue(username,out retrieveUser);

希望有所帮助!

原文地址:https://www.jb51.cc/csharp/98209.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐