我努力为属性列表及其可能的值生成所有可能的组合。我想实现是这样的方法:为属性动态列表生成所有可能的组合及其值
public List<Variant> generateAllPossibleVariants(List<Attribute> attributes)
属性类看起来如下:
public class Attribute {
public String Name { get; set; }
public ICollection<String> PossibleValues { get; protected set; }
}
所以,想象一下,你有2个属性的列表(在计数是动态的)与其可能的值:
attributeColor with possible Values of ("red", "blue")
attributeSize with possible values of ("XL", "L")
现在我的方法应该返回变的名单,而variant类看起来如下:
现在public class Variant
{
public IDictionary<Attribute, string> AttributeValues { get; private set; }
}
我的方法应该返回类似下面的所有组合的列表:
List<Variant> :
Variant.AttributeValues { attributeColor => "red", attributeSize => "XL" }
Variant.AttributeValues { attributeColor => "red", attributeSize => "L" }
Variant.AttributeValues { attributeColor => "blue", attributeSize => "XL" }
Variant.AttributeValues { attributeColor => "blue", attributeSize => "L" }
这可能帮助:http://stackoverflow.com/questions/4073713/is-there-a-good-linq-way-do-a-cartesian-product – 2015-02-23 12:14:31
我真的认为这就是为什么DB在哪里做的,如果你把数据存储在数据库中它会更清晰如何存储和拉动它。但这是我的看法。 – Liran 2015-02-23 12:29:27