我有一个列表:Collection users,其中包含大约 100K+ 条用户记录(所有用户对象都从数据库中完全加载,其中包含 Bio、First name、last name 等字段)。此集合在应用程序启动时从数据库中获取并保存在内存中。
然后我有这样的代码:
User cachedUser = users.FirstOrDefault(x => string.Equals(x.UserName, username,
StringComparison.CurrentCultureIgnoreCase));
我用它从这个集合中获取用户。但不知何故,我注意到这个操作非常慢。使用 Linq 在内存中查询大对象集合时是否存在性能问题?我是否应该在每次想要获得用户时调用数据库?
最佳答案
我认为您可能需要根据您提供给我们的信息重新考虑您的架构。利用数据库,让它为您完成搜索工作。观察、测量,然后做出相应的改变。您可能会意识到您过早地优化了整个事情。
关于c# - 内存中集合的 Linq 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124273/