IEnumerable First()、ElementAt(0) 和 Count() 在本地执行得非常慢 [关闭]

问题描述 投票:0回答:0

我在 IEnumerable 上执行了 Count() 以查看它返回了多少条记录。它们是大约 25 个属性的对象。我在代码中打了一个断点,差不多用了 2 分钟才返回。有13条记录。 First() 和 ElementAt(0) 也超级慢。知道这是为什么吗?将 IEnumerable 转换为列表也很慢,但至少列表操作要快得多。有没有一种快速的方法来获取 IEnumerable 的计数或找出第一个对象是什么?

IEnumerable 由数据库调用填充。这些对象是 RoleVerifications。它们具有以下属性:ID、AuditID、Status、Role、Employee、Approver、Comments、SignOffDate、RevokedByDate、LastUpdatedBy、DelegatedDate、DelegatedBy。大多数是字符串或日期。 Employee 和 Approver 是 Person 对象(Id、名字、姓氏、电子邮件等...)

这是填充 IEnumerable 的调用。它运行速度超快。

 IEnumerable<RoleVerifications> roleVerifications = _artService.GetVerificationsForManager(viewModel.ApproverUsername).Where(u => u.Audit.Id == viewModel.AuditId && u.SignoffDate == null);

返回需要2分钟(13条记录)

int count = roleVerifications.Count();
c# list ienumerable
© www.soinside.com 2019 - 2024. All rights reserved.