要在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数据库应该如何设计才最简洁。
简单的办法是用Dictionary,先可不放ID和Name项;然后分别排序就行了(本身就是集合,这个排序很简单);
然后将ID和Name项插到最前面;最后使用微软的javascript空间的序列化类方法。
这个可以方法可以处理少量商品当期的价格排序。当要同时对100种商品进行排序时速度会不会太慢,而且每次都要进行排序资源消耗会不会太多。
@罗伯特·福特: 不会。量太小。
排序的意义何在??
如果info对应表。排序无从谈起。如果info对应某个字段。
从数据库取出来。在前端或者你后端作为k,v排序。
那排完序要保存排序记录怎么办?各地区价格经常波动变化,要保存历史记录。
@罗伯特·福特: 你就把info这条记录保存到数据库不就是历史记录了嘛。
要用的时候,查出来。转换成kv。排序不就ok了。
@calvinK: 每次都进行查询、转换、排序,服务端压力是不是太大了。能不能查询、转换、排序后以后能直接查询到排序情况。
@罗伯特·福特:
查询的时候。你直接丢到一个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
对同一商品不同地区的价格进行排序
是什么意思.我看你有多个价格.
每个商品的各地区价格从低到高排序,要从中找出最低价和最低价格所在地,最高价和最高价所在地。并且商品价格会进行波动,需要提供历史价格
@罗伯特·福特: 哦.意思是你要找出值最大的列?而不是行?
@吴瑞祥: 不是找出最大的列或行。因为每一行最低价所对应的地区可能不一样,每一行找出最低价及其对应的地区,并且第二低,第三低等等都是需要找出来的。并且要把结果存进mysql数据库
@罗伯特·福特: 那一的意思是要列转行.然后按值排序?
我实在是搞不懂你的思路..
@吴瑞祥: 最好是不要进行列转行,能不能直接进行排序?并且存储排序结果,下次要用的时候不用再进行排序。
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了。
Info修改设计后于数据库对应不上,无法直接提取数据怎么办呀?