c# - 如何从多个 optional 中获取单个值?

标签 c#

我的情况是我需要获得一个定义多个选择选项组合的值。这是我想要做的事情的一个小例子。

一位用户正在购买一件衬衫。用户在购买衬衫时可以选择许多不同的选项。每个选择组只能(而且必须)选择一个选项。选择组可以表示为单选按钮列表或下拉列表,任何只允许对每个组进行一个选择的任何东西。例如:

Jersey 颜色:红色、蓝色、绿色、黑色、白色或黄色
衬衫尺码:X-S、小、中、大、X-L、X-L
衬衫设计:横条纹、竖条纹、波点、斜条纹、无设计
衬衫类型:纽扣衬衫、Polo 衫、T 恤、长袖 T 恤、卫衣

所以为了这个问题只能从每组中选择一个选项。使用可能的选择,我总共得到 900 种不同的变体 (6x6x5x5)。鉴于以下选项具有以下值:

红色 = 1,蓝色 = 2,绿色 = 3,黑色 = 4,白色 = 5,黄色 = 6
X-Small = 0,Small = 1,Medium = 2,Large = 3,X-Large = 4,XX-Large = 5
水平条纹 = 0,垂直条纹 = 1,波尔卡圆点 = 2,斜条纹 = 3,无设计 = 4
纽扣衬衫 = 0,Polo 衫 = 1,T 恤 = 2,长袖 T 恤 = 3, Jersey = 4

{红色、X-S 码、水平条纹、纽扣衬衫} = 1 和{蓝色、X-S 码、水平条纹、纽扣衬衫} = 2 等,

根据所做的选择找到值的正确方法是什么?例如,{Black, Large, Horizo​​ntal Striped, T-Shirt} 的选择值应该是多少?您是如何找到解决方案的?我不能完全确定它,我尝试过的一切似乎都没有成功。这可能是一个简单的解决方案,而我现在只是脑死亡。

最佳答案

您可以连接选项的值,就像它们是字符串一样(通过将每个单独的值转换为字符串,连接它们,然后将其转换为整数)。因此,{Black, Large, Horizo​​ntal Striped, T-Shirt} 将是 4302。这应该保证没有两个可能的组合具有相同的标识符(尽管我不是数学高手)。

关于c# - 如何从多个 optional 中获取单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/945974/

相关文章:

C# 如何在多个文件中为同一个类定义方法?

c# - 按钮有时不会在 Windows 窗体上被禁用

c# - AutoMapper 从子级获取属性

c# - 该程序集不允许部分受信任的调用方。初始化组件()

c# - 在真实场景中实现身份服务器身份验证

c# - 在服务器和客户端上一致地存储 DateTime

c# - 如何在Azure中处理客户端证书

c# - 'CrystalDecisions.CrystalReports.Engine.ReportDocument' 的类型初始值设定项抛出异常

c# - Win RT SQLite 事务性插入

c# - 从 MongoDB 数组中删除元素