c# - 减少两个 foreach 循环中的执行时间

标签 c# linq asp.net-core-mvc

//Get linked claim for children list from ClaimLink
foreach (var claim in processedClaims)
{
    if (claim.Children == null)
    {
        claim.Children = new List<Claim>();
    }
    var claimRelationList = newClaimLink.Where(k=> k.ClaimLinkId == claim.Id).ToList();
    if (claimRelationList.Any())
    {
        //Get the claim for all selected ClaimLink
        foreach (var claimLink in claimRelationList)
        {
            var newChildren = claims.Where(p => p.Id == claimLink.ClaimId).ToList();
            claim.Children = claim.Children != null && claim.Children.Any() ? newChildren.Concat(claim.Children) : newChildren;
        }
    }
}

我想减少上面两个 foreach 循环的执行时间。还有比这更好的方法吗?

最佳答案

您可以删除 if (claimRelationList.Any()) 条件,因为以下 foreach 不会遍历空列表。 您已经知道 claim.Children 在其中 for each 不为空,因为您在上面对其进行了初始化。所以我会替换

claim.Children = claim.Children != null && claim.Children.Any() ? newChildren.Concat(声明.Children) : newChildren;

claim.Children.AddRange (newChildren)

关于c# - 减少两个 foreach 循环中的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49534267/

相关文章:

ajax - 使用 AJAX 和 ASP.NET Core 登录

c# - 可以全屏打开程序的应用程序?

c# - 将 XDocument 优化为 XDocument XSLT

c# - Linq GroupBy 将每个空值作为一个组

security - 保护 .NET Core MVC 网站免受暴力登录尝试(通过内置方式)

c# - 如何在 Visual Studio 2015 上的 ASP.NET Core 中创建 T4 文本模板 (.tt)

c# - 将标志拆分为规范化表

c# - 在列表中添加新项目时出现奇怪的速度差异(C#)

c# - 将 foreach 循环转换为 linq 代码

c# - 如何正确配置 foreach 循环以避免索引超出范围错误?