C#lambda - 将数组键入值数组

时间:2015-02-25 09:28:20

标签: c# arrays lambda

如何使用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;
}

2 个答案:

答案 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 表达式