gpt4 book ai didi

c# - 按引用对列表进行排序 C#

转载 作者:行者123 更新时间:2023-12-02 19:37:06 25 4
gpt4 key购买 nike

我有一个List<Unit>哪里Unit包含NameValue 。在这个对象中,我存储有关服装尺码的信息 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),但是如何根据引用对列表进行排序。

或者还有其他聪明的方法可以做到这一点吗?

更新

感谢所有好的答案,我找到了 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();

有什么意见或者我可以改进的地方吗?

最佳答案

使用枚举怎么样

public enum Size
{
Small = 1,
Medium = 2,
// etc

}

然后您可以将Unit类中的枚举值转换为int并按整数值排序。

关于c# - 按引用对列表进行排序 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9358635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com