2012-04-23 9 views
1

ラムダ式の初心者ですので、1時間から試しています。 ラムダ式を使用したKeyValueペアの一般的なリストをトラバースします

は、私は、一般的なリストを持っている - 基本的にキー

と値のペアを保持List<KeyValuePair<int, string>>。私はラムダ式を使用してリスト項目を印刷することを検討しています。誰でも

ラムダ式を使って次のforeach文を翻訳するのに手伝ってください。

foreach(KeyValuePair<int, string> kvp in list) 
{ 
    Console.WriteLine(kvp.Key.ToString() + " ----> " + kvp.Value.ToString()); 
} 

答えて

1

うれしい:)

list.ForEach(item => Console.WriteLine(item.Key.ToString() + " ----> " + item.Value.ToString())); 

リストは:あなたが

list<string> names=new list<string>{"name1","name2","name3"}; 
names.ForEach(name=>Console.WriteLine(name)); // write names to the console 
console.Readline(); // wait on console until input 
を横断するリストの名前です。
2

は、一般的なConverter(TInput, TOutput)デリゲートでLINQの式をカプセル化します:

Converter<List<KeyValuePair<int, string>>, string> converter = (input) => 
    { 
     return input.Select(i => i.Key + " --> " + i.Value) 
        .Aggregate((a, n) => a + Environment.NewLine + n); 
    }; 

使用

string output = converter(items); 

テストデータはを設定します。

var items = new List<KeyValuePair<int, string>> 
    { 
      new KeyValuePair<int, string>(1, "111"), 
      new KeyValuePair<int, string>(2, "222"), 
      new KeyValuePair<int, string>(3, "333"), 
    }; 

出力:私は自分自身でこれを理解することができた

1 --> 111 
2 --> 222 
3 --> 333 
+0

私は以下の方法で印刷しました。とにかくあなたのソリューションはあまりにもうまくいきます:) –

+1

リストの場合、それは最も簡単で簡単な解決策になります – sll

1

リストにForeachメソッドを使用する

Array.ForEach(list.ToArray(), kvp=> Console.WriteLine(kvp.Key.ToString() 
+ " ----> " + kvp.Value.ToString())); 
関連する問題