首页 新闻 会员 周边

有没有什么好方法,对同一商品不同地区的价格进行排序?

0
悬赏园豆:50 [已解决问题] 解决于 2017-06-02 21:48

要在C#和mysql用使用

实体类Info

    class Info
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal BJprice { get; set; }
        public decimal SHprice { get; set; }
        public decimal NJprice { get; set; }
        public decimal GZprice { get; set; }
        public decimal HZprice { get; set; }
    }

数据

复制代码
   List<Info> infolist = new List<Info>();
   infolist.Add(new Info() { Id = 1, Name = "Iphone7s", BJprice = 5800, SHprice = 5750, NJprice = 6200, GZprice = 5500, HZprice = 5900 });
   infolist.Add(new Info() { Id = 2, Name = "Iphone7", BJprice = 4800, SHprice = 4810, NJprice = 4500, GZprice = 4500, HZprice = 4850 });
   infolist.Add(new Info() { Id = 3, Name = "Iphone6s", BJprice = 3500, SHprice = 3800, NJprice = 3400, GZprice = 3200, HZprice = 3600 });
   infolist.Add(new Info() { Id = 4, Name = "Ipad", BJprice = 2100, SHprice = 2010, NJprice = 2300, GZprice = 1990, HZprice = 2000 });
   infolist.Add(new Info() { Id = 5, Name = "Ipad mini 4", BJprice = 2500, SHprice = 2450, NJprice = 2200, GZprice = 2300, HZprice = 2250 });
复制代码

希望能对infolist中各条数据中的价格按从小至大排序如下:

{id:1,name:Iphone7s,GZprice:5500,SHprice:5800,BJprice:5800,HZprice:5900,NJprice:6200,}

{id:2,name:Iphone7,NJprice:4500,GZprice:4500,BJprice:4800,SHprice:4810,HZprice:4850,}

{id:3,name:Iphone6s,GZprice:3200,NJprice:3400,BJprice:3500,HZprice:3600,SHprice:6200,}

.........

用什么方法才能快速达到上面效果

并将上面的数据存入mysql数据库,便于作为历史价格调用。mysql数据库应该如何设计才最简洁。

罗伯特·福特的主页 罗伯特·福特 | 初学一级 | 园豆:133
提问于:2017-05-17 19:10
< >
分享
最佳答案
0

简单的办法是用Dictionary,先可不放ID和Name项;然后分别排序就行了(本身就是集合,这个排序很简单);

然后将ID和Name项插到最前面;最后使用微软的javascript空间的序列化类方法。

收获园豆:30
花飘水流兮 | 专家六级 |园豆:13560 | 2017-05-18 19:43

这个可以方法可以处理少量商品当期的价格排序。当要同时对100种商品进行排序时速度会不会太慢,而且每次都要进行排序资源消耗会不会太多。

罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-18 21:59

@罗伯特·福特: 不会。量太小。

花飘水流兮 | 园豆:13560 (专家六级) | 2017-05-18 22:45
其他回答(3)
0

排序的意义何在??

如果info对应表。排序无从谈起。如果info对应某个字段。

从数据库取出来。在前端或者你后端作为k,v排序。

czd890 | 园豆:14412 (专家六级) | 2017-05-17 19:23

那排完序要保存排序记录怎么办?各地区价格经常波动变化,要保存历史记录。

支持(0) 反对(0) 罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-17 19:41

@罗伯特·福特: 你就把info这条记录保存到数据库不就是历史记录了嘛。

要用的时候,查出来。转换成kv。排序不就ok了。

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2017-05-17 23:11

@calvinK: 每次都进行查询、转换、排序,服务端压力是不是太大了。能不能查询、转换、排序后以后能直接查询到排序情况。

支持(0) 反对(0) 罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-18 08:10

@罗伯特·福特: 

查询的时候。你直接丢到一个list里面就好了呀。

datareader= select * from xx

datareader.next()

list.addd(new item(){price=atareader["GZprice"],name=GZprice})

list.addd(new item(){price=atareader["NJprice"],name=NJprice})

......

 

list.orderby(p=>p.price)

.........

your code

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2017-05-18 11:20
0

对同一商品不同地区的价格进行排序

是什么意思.我看你有多个价格.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-17 19:27

每个商品的各地区价格从低到高排序,要从中找出最低价和最低价格所在地,最高价和最高价所在地。并且商品价格会进行波动,需要提供历史价格

支持(0) 反对(0) 罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-17 19:44

@罗伯特·福特: 哦.意思是你要找出值最大的列?而不是行?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-17 19:46

@吴瑞祥: 不是找出最大的列或行。因为每一行最低价所对应的地区可能不一样,每一行找出最低价及其对应的地区,并且第二低,第三低等等都是需要找出来的。并且要把结果存进mysql数据库

支持(0) 反对(0) 罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-17 20:02

@罗伯特·福特: 那一的意思是要列转行.然后按值排序?

我实在是搞不懂你的思路..

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-17 22:39

@吴瑞祥: 最好是不要进行列转行,能不能直接进行排序?并且存储排序结果,下次要用的时候不用再进行排序。

支持(0) 反对(0) 罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-18 08:13
0

Info这个类的设计有问题

按你说的,一个商品拥有多个不同地区的价格而且这些价格随时会变动

 

那么应该设计未 一个 Info对象拥有 区域价格的 集合

 

public class Info

{

     public int ID{get;set;}

     public string Name{get;set;}

     public List<RegionPrice> Prices{get;set;}

}

 

这样当你需要队某个商品的所有价格排序时,info1.Prices.Sort();就OK了。

收获园豆:20
西漠以西 | 园豆:1675 (小虾三级) | 2017-05-18 18:01

Info修改设计后于数据库对应不上,无法直接提取数据怎么办呀?

支持(0) 反对(0) 罗伯特·福特 | 园豆:133 (初学一级) | 2017-05-18 23:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册