c# redis

马少华 2017-05-04 03:50:23
const string MI = "MISSIONKEY";
using (RedisClient client = new RedisClient())
{
var li = client.As<OmrCutMission>();
var item = li.Lists[MI].FirstOrDefault();
Console.WriteLine(item);
li.RemoveItemFromList(li.Lists[MI], item);
li.Save();
Console.WriteLine(li.Lists[MI].Count);
}

为啥删除不了,网上也没搜到相关问题,难道没人遇到????
求指点。。。。
...全文
268 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2017-06-02
  • 打赏
  • 举报
回复
引用 14 楼 evionmzs 的回复:
[quote=引用 13 楼 hanjun0612 的回复:] 帮你结了。。
这个是什么问题呢?总麻烦你们也不好吧。[/quote] 不清楚,可能是csdn自己的问题, 或者你换个浏览器试试
马少华 2017-06-02
  • 打赏
  • 举报
回复
引用 13 楼 hanjun0612 的回复:
帮你结了。。
这个是什么问题呢?总麻烦你们也不好吧。
正怒月神 2017-06-02
  • 打赏
  • 举报
回复
帮你结了。。
马少华 2017-06-02
  • 打赏
  • 举报
回复
版主,结不了贴,我用的microsoft edge,反映过好多次了,也没有人解决。 一直提示给的分不对。
马少华 2017-05-04
  • 打赏
  • 举报
回复
不知道是不是驱动的问题。 今天为这事弄了一天,最后发现removeat(index)是可以删除数据的。 但是remove(item)就不行了,如是跟到代码里去看了一下, 发现remove(item)内部还是调用的RemoveAt(index),这就奇怪了, 接着跟,发现Remove里面是用的是 int index = this.IndexOf(item); 继续跟进indexof里面发现问题了, 原来是调用的object.Equals来比较两个对象的。 所以在自己的类中重写了Equals,(同时还要重写GetHashCode)问题解决了。 但一直有个疑问,以前List.Remove可以在类不重写Equals的情况下很好的工作,希望大牛门指点一二, 还有个DeleteById这个奇葩的方法,到底是怎么工作的,是不是一定得有Id字段,,,,, 明天再研究了。
马少华 2017-05-04
  • 打赏
  • 举报
回复
引用 9 楼 woainixinxin521 的回复:
[quote=引用 5 楼 evionmzs 的回复:] [quote=引用 4 楼 woainixinxin521 的回复:] 这个删除没问题啊
我电脑上就是删不了数据,,,,不知道是不是驱动版的问题。[/quote] 按道理来说删不了的话 字符串应该也删不了的 具体我也不清楚 没用过这东西 吃饭上晚自习去了[/quote] 换了你的方法在类上面加上datacontract和datamember这些标记,还是不行。 我用的NServiceKit库。
打老虎zz 2017-05-04
  • 打赏
  • 举报
回复
引用 5 楼 evionmzs 的回复:
[quote=引用 4 楼 woainixinxin521 的回复:] 这个删除没问题啊
我电脑上就是删不了数据,,,,不知道是不是驱动版的问题。[/quote] 按道理来说删不了的话 字符串应该也删不了的 具体我也不清楚 没用过这东西 吃饭上晚自习去了
打老虎zz 2017-05-04
  • 打赏
  • 举报
回复
引用 4 楼 woainixinxin521 的回复:
这个删除没问题啊
[DataContract] public class aaaa { public aaaa() { key = 4; value = 3; } [DataMember] public int key; [DataMember] public int value; } 类这样去写 别用Serializable
马少华 2017-05-04
  • 打赏
  • 举报
回复
using (RedisClient client = new RedisClient()) { var item = client.GetItemFromList(MI, 0); client.RemoveItemFromList(MI, item); } 这代码可以正常删除数据,,,
打老虎zz 2017-05-04
  • 打赏
  • 举报
回复
 class Program
    {
        public const string MI = "MISSIONKEY";
        static void Main(string[] args)
        {
            using (RedisClient client = new RedisClient())
            {
                var li = client.As<aaaa>();
                aaaa item = li.Lists[MI].FirstOrDefault();
                //aaaa test = new aaaa();
                //li.AddItemToList(li.Lists[MI], test);

                Console.WriteLine(item);
                li.RemoveItemFromList(li.Lists[MI], item);
                li.Save();
                Console.WriteLine(li.Lists[MI].Count);
            }



            Console.ReadLine();
        }
    }
    [DataContract]
    public class aaaa
    {
        public aaaa()
        {
            key = 4;
            value = 3;

        }
        [DataMember]
        public int key;
        [DataMember]
        public int value;
    }
马少华 2017-05-04
  • 打赏
  • 举报
回复
引用 4 楼 woainixinxin521 的回复:
这个删除没问题啊
我电脑上就是删不了数据,,,,不知道是不是驱动版的问题。
打老虎zz 2017-05-04
  • 打赏
  • 举报
回复
这个删除没问题啊
马少华 2017-05-04
  • 打赏
  • 举报
回复
无参构造函数默认连接本机的, 添加,查询都没问题。 删除的话,如果直接按字符串删除也没问题, 按对象删除就不成功。
打老虎zz 2017-05-04
  • 打赏
  • 举报
回复
我安装了一下Nuget包 他的构造函数是这样的
打老虎zz 2017-05-04
  • 打赏
  • 举报
回复
RedisClient 是不是需要告诉它哪个计算机的redis?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧