1

我是 Lambda 表达式的新手,所以一直在尝试一个小时。

我有一个通用列表 -List<KeyValuePair<int, string>> 基本上拿着一把钥匙

和一个值对。我正在寻找使用 lambda 表达式打印列表项。任何人都可以

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

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

3 回答 3

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
于 2012-04-23T14:32:02.340 回答
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
于 2012-04-23T14:36:30.433 回答
1

在列表中使用 Foreach 方法

Array.ForEach(list.ToArray(), kvp=> Console.WriteLine(kvp.Key.ToString() 
+ " ----> " + kvp.Value.ToString()));
于 2012-04-23T18:43:37.627 回答