У меня есть List<Unit>
, где Unit
содержит Name
и Value
. В этом объекте я храню информацию о размерах одежды Name
содержит имена размеров (S, M, L, XL ..), а Value
содержит количество таких размеров.
Этот список объектов содержится в базе данных, но список идет в случайном порядке, поэтому в списке он может выглядеть так:
Unit(M,3)
Unit(S,1)
Unit(XXL,2)
Unit(L,2)
Я бы хотел отсортировать список так, чтобы он выглядел примерно так:
Unit(S,1)
Unit(M,3)
Unit(L,2)
Unit(XXLL,2)
Я не могу заказать строку ASCE
или DESC
, поскольку она M
предшествует S
и так далее.
Тогда я подумал, что мог бы создать ссылочный массив с правильным порядком (XXS, XS, S, M, L, XL, XXL, XXXL), но как я могу отсортировать свой список по ссылке.
Или есть другие умные способы сделать это?
Update
Спасибо за все хорошие ответы, я нашел решение Enum
, и оно, наконец, выглядит так:
public class Unit
{
public Unit()
{
}
public Unit(string name, int value)
{
Value = value;
SizeCode = AssignSizeCode(name);
}
public SizeCode SizeCode { get; set; }
public int Value { get; set; }
private SizeCode AssignSizeCode(string name)
{
switch (name)
{
case "XXS":
return SizeCode.XXS;
case "XS":
return SizeCode.XS;
case "S":
return SizeCode.S;
case "M":
return SizeCode.M;
case "L":
return SizeCode.L;
case "XL":
return SizeCode.XL;
case "XXL":
return SizeCode.XXL;
case "XXXL":
return SizeCode.XXXL;
default:
return SizeCode.Unknown;
}
}
}
public enum SizeCode
{
XXS = 1,
XS = 2,
S = 3,
M = 4,
L = 5,
XL = 6,
XXL = 7,
XXXL = 8,
Unknown = 9
}
И я сортирую это так:
units = units.OrderBy(x => (int)x.SizeCode).ToList();
Любые комментарии или что я могу улучшить?