c# - 尝试优化 linq 查询
问题描述
我正在尝试创建一个linq
查询来执行以下操作:
- 获取所有用户的计数
- 获取所有官方用户的数量
- 获取所有非官方用户的数量
到目前为止,我想出了以下内容:
var query = context.Users;
List<Users> users = query.ToList();
int totalUsers = users.Count;
int officialUsers = users.Where(s => s.IsOfficialUser).ToList().Count;
int nonOfficialUsers = users.Where(s => !s.IsOfficialUser).ToList().Count;
我不确定我.ToList()
多次调用会对性能产生多大影响。所以我希望有办法优化查询还是我走在正确的轨道上?
解决方案
在物化列表上使用.ToList
只会影响所需的内存量。虽然这在技术上可能会影响性能,但除非您拥有数百万用户,否则不太可能;在这种情况下,老实说,无论如何您都可能拥有可用的服务器 RAM。
.ToList
当然不是必需的。您需要做的就是在这里计算差异,因此您可以跳过 ToList 和 Where(因为 Count 接受 Func)
int officialUsers = users.Count(s => s.IsOfficialUser);
int nonOfficialUsers = users.Count(s => !s.IsOfficialUser);
推荐阅读
- reactjs - 如何使用一个自定义钩子在两个远程组件之间共享数据
- python - SKLearn 线性回归 - AttributeError:“numpy.ndarray”对象没有属性“列”
- jenkins - 在声明性 Jenkinsfile 中设置管道描述
- vhdl - VHDL 中的数组/STD_LOGIC_VECTOR
- victory-charts - 在 VictoryChart 中偏移两个子图表
- touch - 尾风。单击移动设备时的蓝色矩形
- sql - 如何将特定数量的列转换为行
- python - 如何在python中将GIF放在GIF之上
- flutter - google map api可以用在另一种地图上吗(例如:传单地图?)?在颤振中
- android - 安装 Xamarin.Firebase.Messaging 120.2.4 后无法运行我的应用程序