通过在c#,servicestack中使用console.writeline获取byte [] []的输出

时间:2014-09-01 07:20:48

标签: c# redis servicestack

![在此输入图片说明] [1]
    console.WriteLine(client.ZRangeByScore(" myset",0,10,0,0).ToString());

zrangebyscore命令是byte [][]的类型。我们有机会将其转换为字符串吗? 我写这样的时候没有错误,但输出是

System.Byte[][]

while(reader.Read()){

                client.Lists["name"].Append(reader["username"].ToString());
                client.Lists["name"].GetAll();
                client.Lists["followers"].Append(reader["reach"].ToString());
                client.Lists["followers"].GetAll();




                double [] array4=new double[client.LLen("followers")];
                for(int i=0;i<client.LLen("followers");i++){
                array4[i]=Convert.ToDouble(client.GetItemFromList("followers",i));

                }
                for(int i=0;i<client.LLen("name");i++){

                    client.AddItemToSortedSet("myset", client.GetItemFromList("name", i), array4[i]);


                }


                Console.WriteLine( client.ZRangeByScore("myset", 0, 10, 0, 0));

这是上面代码的某些部分.ZRangeByScore是一个命令,它给出了有序集的输出,它在servicestack中的定义就像那样&#39; byte [] [] RedisNativeClient.ZRangeByScore(string setID,long min,long max,int?skip,int?take)&#39; 我可以在redis客户端中获得正确的输出,但我也想在控制台应用程序上显示它

1 个答案:

答案 0 :(得分:1)

  

当我这样写时,我没有错误,但输出是

     

System.Byte [] []

这意味着您在System.Byte [] []上调用.ToString()。

ToString()方法没有通用实现来显示这个多维数组的所有值,因此您必须自己完成。您可能希望迭代维度并将每个维度放入其自己的行(表格格式)或您选择的任何人类可读的控制台输出。必须在现在实际调用ToString()的地方完成此操作。

实施例: 你这样做:

console.WriteLine( client.ZRangeByScore("myset", 0, 10, 0, 0).ToString());

您可以将其更改为:

var byteArray = client.ZRangeByScore("myset", 0, 10, 0, 0);

foreach(var array in byteArray)
{
  Console.WriteLine("this array has the size " + array.Length);
  foreach(var element in array)
  {
    Console.Write(element + "");
  }
}

[上面的代码没有经过测试,如果构建失败就纠正它] 您可能希望将其包装到函数中或覆盖类中的ToString()(然后您可能想为此创建一个类...)

这只是一种完成方式。