如何使用lambda表达式实现以下GetValues
方法?
public object[] GetValues(string[] keys, Dictionary<string, object> map)
{
// A simple non-lambda implementation
object[] values = new object[keys.Length];
for (int i = 0 ; i < keys.Length ; i++)
{
values[i] = map[keys[i]];
}
return values;
}
答案 0 :(得分:3)
这个怎么样?
return keys.Select(key => map[key]).ToArray();
如果您不确定map
是否包含key
,请使用此代码:
return keys.Where(key => map.ContainsKey(key))
.Select(key => map[key]).ToArray();
答案 1 :(得分:2)
您可以使用Array.ConvertAll:
object[] res = Array.ConvertAll(keys, x => map[x]);
(注意&#34;技术上&#34;我没有使用LINQ,因为Array.Convert
不是LINQ的正确部分,因为它早于它,我使用lambda 函数不是lambda 表达式)