Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算SKU的可能组合_C#_.net_Combinations - Fatal编程技术网

C# 计算SKU的可能组合

C# 计算SKU的可能组合,c#,.net,combinations,C#,.net,Combinations,我有这样的情况: 带有SKU的产品 此产品具有具有SKU后缀的属性(复选框) (想象一个带有插件的产品) 属性始终以固定顺序排列,而不是下颚。产品的最终SKU为基本SKU+选定属性的后缀 例如,带有baseskuXXX的产品有3个属性,后缀分别为a、B和C 本产品的可能组合为: XXX-A XXX-A-B XXX-A-B-C XXX-A-C XXX-B XXX-B-C XXX-C 因为属性的顺序是固定的,所以永远不可能有XXX-C-B 计算这些SKU的最佳方法是什么 编辑:我应该告诉你这些

我有这样的情况:

  • 带有SKU的产品
  • 此产品具有具有SKU后缀的属性(复选框)
  • (想象一个带有插件的产品)
属性始终以固定顺序排列,而不是下颚。产品的最终SKU为基本SKU+选定属性的后缀

例如,带有basesku
XXX
的产品有3个属性,后缀分别为
a
B
C

本产品的可能组合为:

XXX-A
XXX-A-B
XXX-A-B-C
XXX-A-C
XXX-B
XXX-B-C
XXX-C
因为属性的顺序是固定的,所以永远不可能有
XXX-C-B

计算这些SKU的最佳方法是什么


编辑:我应该告诉你这些属性是动态创建的。因此不可能有attA+“-”+attB。我需要一种方法来动态生成可能的SKU列表

我看到另一个答案是计数。
对不起,如果我看错了问题

Public String SKU { get; set; }

Public bool Aattr { get: set; }
Public bool Battr { get: set; }
Public bool Cattr { get: set; }

Public String SKUwSuffix 
{
   get
   {
      string sKUwSuffix = SKU; 
      if (Aattr) sKUwSuffix += "-A";
      if (Battr) sKUwSuffix += "-B";
      if (Cattr) sKUwSuffix += "-C";
      return sKUwSuffix;
   }
}

我看到另一个答案是计数。
对不起,如果我看错了问题

Public String SKU { get; set; }

Public bool Aattr { get: set; }
Public bool Battr { get: set; }
Public bool Cattr { get: set; }

Public String SKUwSuffix 
{
   get
   {
      string sKUwSuffix = SKU; 
      if (Aattr) sKUwSuffix += "-A";
      if (Battr) sKUwSuffix += "-B";
      if (Cattr) sKUwSuffix += "-C";
      return sKUwSuffix;
   }
}

使用
StringBuilder

var sb = new StringBuilder("XXX");
if (skuACheckBox.Checked) {
    sb.Append("-A");
}
if (skuBCheckBox.Checked) {
    sb.Append("-B");
}
if (skuCCheckBox.Checked) {
    sb.Append("-C");
}
string skuWithSuffix = sb.ToString();

使用
StringBuilder

var sb = new StringBuilder("XXX");
if (skuACheckBox.Checked) {
    sb.Append("-A");
}
if (skuBCheckBox.Checked) {
    sb.Append("-B");
}
if (skuCCheckBox.Checked) {
    sb.Append("-C");
}
string skuWithSuffix = sb.ToString();

我建议维护一个不重复的选定后缀属性集合,并最终使用集合连接sku。

我建议维护一个不重复的选定后缀属性集合,并最终使用集合连接sku。

只需拥有一个公共属性SKUwSuffix并构建它即可up.可能重复yes duplicate,谢谢你的评论我以前找不到这个只要有一个公共属性SKUwSuffix并建立它。可能重复yes duplicate,谢谢你的评论我以前找不到这个