首页 > 解决方案 > 删除 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;

标签: c#linq

解决方案


您的标题因所问问题而异。因为您谈到用 linq 替换 foreach 的速度不会加快您的循环。问题在于它的等待。此外,linq 的 foreach 使用 await 有点棘手: C# async await using LINQ ForEach()


推荐阅读