我有个方法是返回LIST<T>的,数量比较大,我想压缩一下,再用WCF传回来客户端再解压,怎样做?

解决方案 »

  1.   

    如果List中有很多重复条目,可以这么做
    complist = list.GroupBy(x => x).Select(x => new { v = x.Key, c = x.Count() })
    解压
    list = complist.SelectMnay(x => Enumerable.Repeat(x.c, x.v))如果list有公共前缀(比如说国家字段、城市字段、街道字段),可以用树状数据结构压缩。如果list有大量文本或者可以压缩的数据,也可以直接二进制序列化,再用标准的压缩算法压缩。解压缩的时候先解压缩,再反序列化。
      

  2.   

    list就是有大量文本或者可以压缩的数据,4000多条记录,是查本地局域网中几个数据库数据,再传给客户端,我的客户端在本地,都花了1分钟多一点
      

  3.   

    http://www.cnblogs.com/stangray/archive/2010/03/22/1691473.html如果你已经用了压缩技术,再在逻辑上压缩就没有太大的效果了。
      

  4.   

    在数据契约上用了list<t>算不算已经用了压缩技术?
      

  5.   


    不算,你看我的链接,比如说配置了GZipEncoder,那才是压缩。如果你是http绑定,你可以用抓包工具看到两者的不同。