2013-05-08 63 views
-4

我如何將此循環轉換爲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表達式。

+3

這是什麼語言?你不能在C#中將'+ ='與聲明結合起來。 – recursive 2013-05-08 23:02:56

+0

它是c#。我只是簡單的字符串與'+ =' – fatima 2013-05-09 00:06:22

+0

拼接顯然你的代碼是無效的,不會編譯。首先,如遞歸所說的,在賦值之前,你不能使用'value'的值,這就是你想用'+ ='操作符做的事情,其次你是無止境的循環,因爲你永遠不會改變'數字'的值。 – Shimmy 2013-05-09 00:13:38

回答

0

我想你想要這樣的:

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

隨着你的樣品:​​(TestTest如果鍵2)

但是,你的循環不會編譯,它是不明確的,你需要number什麼當密鑰已經指示重複次數時。

+0

感謝您的回覆,我只是在我的問題中添加更多上下文。我嘗試你的解決方案,但我沒有得到我的預期結果 – fatima 2013-05-09 00:17:20