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 表达式)
下面的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 表达式)