多个foreach循环的Lambda表达式

jim*_*les 0 c# lambda

我想对组,语言和TestEnum的所有可能组合运行GetResults().如何使用lambda表达式重新编写此代码以避免使用foreach循环?

    public enum TestEnum
    {
        ONE,
        TWO,
        THREE
    }

    public static void Test1()
    {
        List<string> groups = new List<string>() { "group1", "group2", "group3", "group4" };
        List<string> languages = new List<string>() { "EN-CA", "FR-CA" };
        List<string> results = new List<string>();

        foreach (string group in groups)
        {
            foreach (string language in languages)
            {
                foreach (TestEnum enumval in Enum.GetValues(typeof(TestEnum)))
                {
                    results.Add(GetResult(group, language, enumval));
                }
            }
        }

    }
    public static string GetResult(string group, string language, TestEnum enumval)
    {
        return group + language + enumval.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 6

我认为这里的查询语法比lambdas更好:

results = (from g in groups
           from l in languages
           from e in Enum.GetValues(typeof(TestEnum)).Cast<TestEnum>()
           select g + l + e).ToList();
Run Code Online (Sandbox Code Playgroud)

产生

group1EN-CAONE
group1EN-CATWO
group1EN-CATHREE
group1FR-CAONE
group1FR-CATWO
group1FR-CATHREE
group2EN-CAONE
group2EN-CATWO
group2EN-CATHREE
etc
Run Code Online (Sandbox Code Playgroud)

  • 我会说*更清楚*,而不是*更好*,因为他们编译成相同的东西.但是,是的,方法语法看起来会更加丑陋. (3认同)