假设一共有30个产品,编号为1-30
产品A有10个,编码为1-10
产品B有5个,编号为11-15
产品C有2个,编号为16-17
产品D有23个,编号为18-30
现在有一个编码是17,我怎么知道产品到底是A还是B还是C还是D注:每类产品编号用掉一个产品数量就减1

解决方案 »

  1.   

     class Product
            {
                public string name { get; set; }
                public int min { get; set; }
                public int max { get; set; }
                public int count { get { return max - min; } }
            }
            static void Main(string[] args)
            {
                List<Product> list = new List<Product>()
                {
                    new Product(){ name="A",min=1,max=10},
                    new Product(){ name="B",min=11,max=15},
                    new Product(){ name="C",min=16,max=17},
                    new Product(){ name="D",min=18,max=30}
                };
                string name = list.Where(t => t.max >= 17 && 17>=t.min).FirstOrDefault().name;
                Console.ReadLine();
            }
      

  2.   

    这个编码也是要程序去算出来的
    我现在只知道产品总数是30,一共有3类产品,
    产品A是5个,产品B是10个,产品C是15个,产品排序也是ABC这样排下来,
      

  3.   

    产品有 N 个,编号为 1 ~ N,一共有四类:A、B、C、D
    产品 A 有 W 个,编码为 1 - W
    产品 B 有 X 个,编号为 (W + 1) ~ (W + 1) + X - 1
    产品 C 有 Y 个,编号为 (W + 1) + X ~ (W + 1) + X + Y - 1
    产品 D 有 Z 个,编号为 (W + 1) + X + Y ~ (W + 1) + X + Y + Z - 1
    现在有一个编码是 M,我怎么知道产品到底是 A 还是 B 还是 C 还是 D?
      

  4.   

    数据库里面一个编号对应一个产品啊,根据编号就能查到产品了嘛,根据产品就知道产品是A,B还是C了
      

  5.   

    如果只知道 当前编码 M 以及各个分类产品的总个数,是无法知道 M 是属于哪个分类的,因为你自己也说了,如果删除一个商品,只是把数量减一,但是数量减一,序号还是没有变,这有有问题,所以我觉得没法根据数量来的。必须使用类似于 #2 的 Min、Max 来判断,一个产品的动态添加和删除会更新这个 Min、Max 值,这样,根据Min、Max的判断比较确定是不是在这个范围里面,和个数没有关系了。
      

  6.   

    建立3个hashtable,在产品出来的时候把编号放到对应类型的hashtable里,随即出来的时候进行判断啊