C# lambda - 键数组到值数组

C# lambda - keys array to values array

下面的GetValues方法如何使用lambda表达式实现?

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;
}

这个怎么样?

return keys.Select(key => map[key]).ToArray();

如果您不确定 map 是否包含 key,请使用:

return keys.Where(key => map.ContainsKey(key))
           .Select(key => map[key]).ToArray();

您可以使用 Array.ConvertAll:

object[] res = Array.ConvertAll(keys, x => map[x]);

(请注意 "technically" 我没有使用 LINQ,因为 Array.Convert 不是 LINQ 的正确组成部分,因为它早于它,而我使用的是 lambda 函数 不是 lambda 表达式)