这个问题与这个SO帖子几乎相同,只是我正在寻找VB.NET(.NET 4)的解决方案。我已经花费了足够长的时间来尝试提出一个通用的解决“幂集”问题的解决方案。
给定:
我希望将
正如您所看到的,这是源代码中每个非重复组合的结果。源代码是IEnumerable(Of T)类型的,其中可能有1个到多个项目(此示例只有4个)。它基于源IEnumerable(Of T)中项目的顺序进行操作,并且列表中的每个项目在内部IEnumerable(Of T)中的项目数量方面都大于或等于前一个项目。
值得一提的是,这不是作业,但感觉就像是一样。
编辑:更新了示例,使其不像按字母顺序排序的结果,以强调使用源IEnumerable(Of T)的现有顺序并添加第四个选择以澄清每个集合内的排序要求。
给定:
Dim choices As IEnumerable(Of String) = {"Coffee", "Tea", "Milk", "Cookies"}
Dim choiceSets = choices.CombineAll()
我希望将
choiceSets
定义为一个IEnumerable(Of IEnumerable(Of T))
,以便我可以进行以下操作:
For each choiceSet in choiceSets
Console.WriteLine(String.Join(", ", choiceSet))
Next
并获得类似以下的结果:
Coffee
Tea
Milk
Cookies
Coffee, Tea
Coffee, Milk
Coffee, Cookies
Tea, Milk
Tea, Cookies
Milk, Cookies
Coffee, Tea, Milk
Coffee, Tea, Cookies
Coffee, Milk, Cookies
Tea, Milk, Cookies
Coffee, Tea, Milk, Cookies
正如您所看到的,这是源代码中每个非重复组合的结果。源代码是IEnumerable(Of T)类型的,其中可能有1个到多个项目(此示例只有4个)。它基于源IEnumerable(Of T)中项目的顺序进行操作,并且列表中的每个项目在内部IEnumerable(Of T)中的项目数量方面都大于或等于前一个项目。
值得一提的是,这不是作业,但感觉就像是一样。
编辑:更新了示例,使其不像按字母顺序排序的结果,以强调使用源IEnumerable(Of T)的现有顺序并添加第四个选择以澄清每个集合内的排序要求。