2014-10-01 130 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

相關問題