将for循环转换为Linq lambda

时间:2013-05-08 22:58:55

标签: linq lambda

我如何将此循环转换为Linq lambda。

我已定义字典

    var dictionary = new Dictionary<int, string>();
        dictionary.Add(1,"Test");
        dictionary.Add(2,"Test2");
        dictionary.Add(3,"Test3");
        dictionary.Add(4,"Test4");

并希望浏览它并根据数值

创建一个字符串
       int number = 10; // I am hard coded this number for this example
       string somevalue = string.Empty;
       int somekey = 0;

   foreach (var simple in dictionary )
         {
             while (number>=simple.Key)
             {
                  somevalue += simple.Value;
                  somekey -= simple.Key;
             }
         }
   }

它可以在简单的循环中正常工作并返回Test4Test4Test2,只需要将其转换为lambda表达式。

1 个答案:

答案 0 :(得分:0)

我想你想要这个:

List<string> list = dictionary
   .Select(kv => string.Join("", Enumerable.Repeat(kv.Value, kv.Key)))
   .ToList();

随你示例:"Test"TestTest如果密钥为2)

但是,你的循环不能编译,当密钥已经指示重复次数时,你不清楚你需要number