有没有办法将RedisValue []转换为字符串[]?
问题描述:
我有一个数组RedisValue[]
从StackExchange.Redis
客户端返回。我希望将数组中的每个值(实际上是JSON
字符串)都加入到数组中,并将它们连接在一起以获取有效的JSON
字符串,以便我可以返回到客户端。有没有办法将RedisValue []转换为字符串[]?
这里就是我想要做的......
var results = redis.HashGet("srch", ArrayOfRedisKeys[]);
string returnString = "[" + string.Join(results, ",") + "]";
然而,这不起作用,因为results
是RedisValue
不是string
数组的数组。除了迭代RedisValue
阵列之外,是否有一种直接且高效的方法来完成此操作?
答
目前不,但我有just pushed以下的扩展方法为ExtensionMethods.cs
:
static readonly string[] nix = new string[0];
/// <summary>
/// Create an array of strings from an array of values
/// </summary>
public static string[] ToStringArray(this RedisValue[] values)
{
if (values == null) return null;
if (values.Length == 0) return nix;
return Array.ConvertAll(values, x => (string)x);
}
所以说:在未来的版本,您可以只使用results.ToStringArray()
。在此之前,您可以在本地复制上述内容。
ALERT。注意如果values为null,你永远不会成功使用'values.ToStringArray()',所以最好像'ToStringArray(values)'一样使用它''而不用扩展方法'this' – Jaider 2017-07-18 15:51:57
@Jaider你可以调用'null'的扩展方法值。以下工作将会很好:'RedisValue [] vals = null; string [] foo = vals.ToStringArray();由于第一个'return',''foo'将是'null'。这工作*正是因为*编译器简单地将其重写为'string [] foo = ExtensionMethods.ToStringArray(vals);' – 2017-07-18 15:59:17
哇,我印象深刻!然后忽视我以前的评论:) – Jaider 2017-07-21 19:16:51