首页 > 解决方案 > 如何在 C# 中将嵌套的 foreach 循环转换为 LINQ 查询

问题描述

如何在 C# 中将嵌套的 foreach 循环转换为 LINQ 查询,我想在查询结果后返回列表。列表将返回值和描述。下面的代码工作正常,但我需要将这 2 个 foreach 循环转换为单个 LINQ 查询。

        List<ListItem> listCodes = new List<ListItem>();
    
        foreach (var staticValueGroupMember in staticValueGroupMembers)
        {
            string description = string.Empty;
            if (staticValueGroupMember != null)
            {
                foreach (var staticValue in staticValues)
                {
                    if (staticValue.Value == staticValueGroupMember.MemberCode.ToString())
                    {
                        description = staticValue.Description;
                        break;
                    }

                }

                listCodes.Add(new ListItem() { Value = staticValueGroupMember.MemberCode.ToString(), Description = description });
            }
        }

        return listCodes;

标签: c#linqforeach

解决方案


这几乎是直接翻译。

List<ListItem> listCodes =
(
    from staticValueGroupMember in staticValueGroupMembers
    where staticValueGroupMember != null
    join staticValue in staticValues
        on staticValueGroupMember.MemberCode.ToString() equals staticValue.Value
    select new ListItem()
    {
        Value = staticValueGroupMember.MemberCode.ToString(),
        Description = staticValue.Description
    }
).ToList();

推荐阅读