现在用List<数据类>操作的数据量大就不给力了经常崩溃。
有没有能多机连接并且适合c#使用的内存数据库给推荐个啊。

解决方案 »

  1.   

    自己用HashTable、BinaryTree等数据结构去实现
      

  2.   

    如果想提高速度,可以用Dictionary泛型类,如果想查询灵活,可以用DataTable类,其实如果多机应用的话,还不如直接用sql server,用内存数据更麻烦也不会提高速度,
      

  3.   


    不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?
      

  4.   

    那是你的代码健壮性差。几千条根本不可能导致list出错。
      

  5.   

    lz的“悲伤的老板”看来需要给lz再次加薪水啊。 老板不要把一个本来挺好的产品弄得“最后只有勉强就行一点小问题的售后服务、其他懂得开发的人都已经走了”这种境地。
      

  6.   

    ArrayList,这个集合体积能够自动扩大2倍,可以保证新的内存连续性,防止在短时间内,内存连续的搬迁,减少性能的损耗。所以ArrayList里存的数据,永远是连续的内存空间。
      

  7.   

    其实HashTable和字典Dictionary也不错,如果想了解之间的性能,最好到网上查询,根据自己的需要,选择适合的集合。
      

  8.   

    几千条数据量不算大吧,你需要从其它方面着手,比如对数据操作的行为,List<T> 没那么脆弱
      

  9.   

    代码问题,加异常捕获,代码走查,找到bug所在。我们项目中dictionary套list,几十万的数据频繁更新也没有造成程序崩溃
      

  10.   

    使用DataSet 或DataTable是最好不过了
      

  11.   


    新疆啊,能写代码的都没几个人。
    前天我还在弄Hyper-v Server 昨天又弄这代码。
      

  12.   

    前段时间处理的数据大概也是几天条,用的List<T>,还可以。
      

  13.   


            private static List<Topic> _list = new List<Topic>();
            private readonly static object _lock = new object();
            public static void Add(Topic topicInfo)
            {
                lock (_lock)
                {
                    _list.Add(topicInfo);
                }
            }
            public static void Remove(Topic topicInfo)
            {
                lock (_lock)
                {
                    _list.Remove(topicInfo);
                } 
            }public static Topic Get()
            {
                Topic topicInfo;
                lock (_lock)
                {
                    topicInfo = _list.Find(delegate(Topic n_topicInfo) { return n_topicInfo.ExpirationTime > DateTime.Now; });
                    if (topicInfo != null)
                    {
                        //移除
                        _list.Remove(topicInfo);
                        
                        return topicInfo;
                    }
                    else
                    {
                        return null;
                    }            }
            }
    这能有什么问题啊。。 目前2000左右数据个线程读写 以后能达到几十万啊
      

  14.   

    cyq.data 的文本数据库可以试试。
      

  15.   


    不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?才几千条就会挂,太不可思意了。我们做游戏,那会数据都是几万条放到List里进行内存操作都不会挂。
    你是不是有用到多线程处理了。
      

  16.   

    Dictionary只是比List快,崩溃问题不一定能解决,不过Dictionary比List稳定的地方是,Dictionary是线程安全的,多线程不需要lock也可以使用Dictionary,不过前面几位说的很有道理,是你的程序写得不够严谨,几千条数据应该不算复杂,
    不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?
      

  17.   

    db4 for net能满足你的要求
      

  18.   

    DataTable 不错。里面提供了很多实用的方法。老虎传送门
      

  19.   


    不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?
    千万别说Dictionary是线程安全的,这可纯粹是误导别人
                for (int i = 0; i < 100; i++)
                {
                    Dictionary<int, object> temp = new Dictionary<int, object>();                for (int j = 0; j < 10; j++)
                    {
                        int m = j;
                        ThreadPool.QueueUserWorkItem((o) =>
                        {
                            temp.Add(m, new object());
                        });  
                    }   
                }
    自己跑跑看看,放按钮的点击事件里,然后你多点几次看看。人家Dictionary可没说自己是线程安全的,ConcurrentDictionary才是线程安全的。
      

  20.   

    Dictionary不是线程安全的,对于你的多线程环境可以试着用ConcurrentDictionary类来储存。