2014-10-01 131 views
7

我有一个数组RedisValue[]StackExchange.Redis客户端返回。我希望将数组中的每个值(实际上是JSON字符串)都加入到数组中,并将它们连接在一起以获取有效的JSON字符串,以便我可以返回到客户端。有没有办法将RedisValue []转换为字符串[]?

这里就是我想要做的......

var results = redis.HashGet("srch", ArrayOfRedisKeys[]); 

string returnString = "[" + string.Join(results, ",") + "]"; 

然而,这不起作用,因为resultsRedisValue不是string数组的数组。除了迭代RedisValue阵列之外,是否有一种直接且高效的方法来完成此操作?

回答

10

目前不,但我有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()。在此之前,您可以在本地复制上述内容。

+0

ALERT。注意如果values为null,你永远不会成功使用'values.ToStringArray()',所以最好像'ToStringArray(values)'一样使用它''而不用扩展方法'this' – Jaider 2017-07-18 15:51:57

+0

@Jaider你可以调用'null'的扩展方法值。以下工作将会很好:'RedisValue [] vals = null; string [] foo = vals.ToStringArray();由于第一个'return',''foo'将是'null'。这工作*正是因为*编译器简单地将其重写为'string [] foo = ExtensionMethods.ToStringArray(vals);' – 2017-07-18 15:59:17

+0

哇,我印象深刻!然后忽视我以前的评论:) – Jaider 2017-07-21 19:16:51

相关问题