c# - 删除 linq 中的循环导致性能降低
问题描述
想删除 foreach 循环并使用 Linq 完成....请建议
在 ViewModal 我有 LeadStatus 名称,在 LeadModal 我有 LeadStatus 的 Id 基于 Id 我必须从 LeadStatusTable 中获取名称并在 ViewModal 中绑定谢谢
List<Entities.LeadViewModel> leadViewModels = new List<Entities.LeadViewModel>();
IEnumerable<Entities.Lead> leads = await _leadRepository.AllNonDeletedAndConvertedLeads();
foreach (var lead in leads)
{
Entities.ChetuUser chetuUser = await _chetuUserRepository.GetChetuUser(lead.OwnerId);
if (!string.IsNullOrEmpty(lead.Status))
{
LeadStatusMaster leadStatusMaster = await _masterTableRepository.LeadStatusMasterById(lead.Status);
if (chetuUser != null && leadStatusMaster != null)
{
leadViewModels.Add(new Entities.LeadViewModel
{
LeadProperty = lead,
LeadStatusName = leadStatusMaster.Name,
CreatedDate = lead.CreatedDate
});
}
else if (chetuUser != null && leadStatusMaster == null)
{
leadViewModels.Add(new Entities.LeadViewModel
{
LeadProperty = lead,
LeadStatusName = "",
CreatedDate = lead.CreatedDate
});
}
else
{
leadViewModels.Add(new Entities.LeadViewModel
{
LeadProperty = lead,
LeadStatusName = "",
CreatedDate = lead.CreatedDate,
OwnerName = ""
});
}
}
else
{
if (chetuUser != null)
{
leadViewModels.Add(new Entities.LeadViewModel
{
LeadProperty = lead,
LeadStatusName = "",
CreatedDate = lead.CreatedDate,
OwnerName = chetuUser.EmployeeName
});
}
}
}
return leadViewModels;
解决方案
您的标题因所问问题而异。因为您谈到用 linq 替换 foreach 的速度不会加快您的循环。问题在于它的等待。此外,linq 的 foreach 使用 await 有点棘手: C# async await using LINQ ForEach()
推荐阅读
- arrays - 如何在 Swift 中将 [String] 划分为指定数量的相等部分?
- json.net - 使用 AnyOf/OneOf/AllOf 生成 JSON 模式
- security - 如何修复 npm 漏洞?
- python - 如何使用嵌套字典进行长度检查
- azure - 尝试使用专用端点和专用链接运行用于存储帐户配置的 ARM 模板时出错
- flutter - 我想用未来的布尔值保存列表项是否可能?
- azure-active-directory - 使用代表流刷新令牌(使用 Teams 单点登录)
- node.js - 在 Mongoose Mongodb 上使用 INDEX 搜索数据
- c++ - 变量的创建是否取决于范围?
- r - 使用 R 选择时间序列数据中的特定时期