c#如何从列表中排序大小

use*_*007 0 c# asp.net

我想展示我的产品尺寸从小到大?:

M,XL,S必须导致:S,M,XL

C#

 protected void Page_Load(object sender, EventArgs e)
        {
            List<product> list = new List<product>();
            product p1 = new product() {productid=1,Size="M" };
            product p2 = new product() { productid = 2, Size = "XL" };
            product p3 = new product() { productid = 3, Size = "S" };
            list.Add(p1);
            list.Add(p2);
            list.Add(p3);
            List<product> orderlist = list.OrderBy(o => o.Size).ToList();

            //list.Sort(size);
            foreach (var pr in orderlist)
            {
                Response.Write(pr.Size +"<br/>");
            }
        }



   public class product
    {
        public int productid{ get; set; }
        public string Size { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

最简单的方法可能Size是以正确的顺序更改为枚举:

public enum ClothingSize
{
    [Abbreviation("S")]
    Small = 0,
    [Abbreviation("M")]
    Medium = 1,
    [Abbreviation("L")]
    Large = 2,
    [Abbreviation("XL")]
    ExtraLarge = 3
}
Run Code Online (Sandbox Code Playgroud)

(将枚举映射到缩写文本形式有多种方法 - 我给出了一个AbbreviationAttribute你自己声明的例子;你可以使用现有的DescriptionAttribute,但是描述比标识符更简洁有些奇怪本身.)

使用枚举的好处:

  • 错别字的风险较小
  • 更容易验证给定大小实际上是否有效(尽管您需要进行验证 - 枚举只是命名数字; (ClothingSize) 15会给您一个不适当的值,例如
  • 自然排序