gpt4 book ai didi

c# - 如何将数组传递给采用 RedisValue[] 的 StackExchange.Redis 方法?

转载 作者:IT王子 更新时间:2023-10-29 06:00:24 27 4
gpt4 key购买 nike

我想调用 IDatabase.SortedSetAsync (StackExchange.Redis)。此方法的签名是:

Task<bool> SortedSetRemoveAsync(RedisKey key, RedisValue member,
CommandFlags flags = CommandFlags.None);
Task<long> SortedSetRemoveAsync(RedisKey key, RedisValue[] members,
CommandFlags flags = CommandFlags.None);

我可以毫无问题地传递隐式转换为 RevisValue 的单个值(例如字符串)。但是,如果我尝试传入一个数组...

var key = "MYKEY";
var values = new string[] { "A", "B", "C" };

await database.SortedSetRemoveAsync(key, values);

...然后编译器不知道如何将字符串[] 转换为RedisValue[]。

我管理转换的唯一方法是进行每项转换:

var values2 = values.Select(s => (Redisvalue) s).ToArray();
await database.SortedSetRemoveAsync(key, values2);

...我不确定这是否是最好的方法。

很奇怪,当有需要数组的 API 方法时,很难传递数组... unit tests通过传入一个空的 RedisValue[] 数组并完全绕过这个问题,采取一个简单的方向。

将数组参数传递给接受 RedisValue[] 数组的 StackExchange.Redis 方法的推荐方法是什么?

最佳答案

选择的解决方案是正确的,但使用 Array.ConvertAll 会更有效率因为它知道数组元素并且可以按索引迭代元素。

var values = new string[] { "A", "B", "C" };
var redisValues = Array.ConvertAll(values, item => (RedisValue)item);

注意你也可以像这样创建列表

RedisValue[] values = { "A", "B", "C" };

关于c# - 如何将数组传递给采用 RedisValue[] 的 StackExchange.Redis 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com