使用Lambda表达式遍历KeyValue对的通用列表

时间:2012-04-23 14:27:57

标签: c# .net lambda c#-3.0

我是Lambda表达的新手,所以从一小时开始就进行了实验。

我有一个通用列表 - List<KeyValuePair<int, string>> 基本上持有一个键

和一对值。我想用lambda表达式打印列表项。任何人都可以

帮助我使用Lambda表达式翻译以下foreach语句吗?

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

很高兴我能够自己解决这个问题:)

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

list:是您想要遍历的列表的名称

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 :(得分:1)

在列表中使用Foreach方法

Array.ForEach(list.ToArray(), kvp=> Console.WriteLine(kvp.Key.ToString() 
+ " ----> " + kvp.Value.ToString()));