0

グループ、言語、および TestEnum のすべての可能な組み合わせに対して GetResults() を実行したいと考えています。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();
    }
4

3 に答える 3

1

私はlazyberezovskyに同意する傾向があります。この場合、クエリ構文は読みやすくなりますが、次のようになります。

results = groups
  .SelectMany(group => languages
     .SelectMany(language => Enum.GetValues(typeof(TestEnum))
        .Cast<TestEnum>()
           .Select(enumValue => GetResult(group, language, enumValue))))
  .ToList();

たぶん、インデントや改行を改善すると、見栄えが良くなるでしょう...

于 2013-10-31T20:51:32.740 に答える