【发布时间】:2016-03-31 10:00:30
【问题描述】:
我有一个List<T>,我想获取所有可能的子列表,例如:
[A, B, C, D, E] => [[A], [A, B], [A, B, C], [A, B, C, D], [A, B, C, D, E]]
有没有一种简单的方法可以通过 LINQ to Objects 获得这个新的可枚举对象?
编辑 1: 请注意,我只想要“前缀列表”,而不是所有可能的排列(即,显示的示例结果已经完成)。
编辑 2: 请注意,我也想保持元素的顺序。
编辑 3: 有没有办法在 O(n) 而不是 O(n²) 中获得可枚举,即通过只迭代源一次而不是多次迭代并返回某种数据上的 view每次都有一个新列表?
【问题讨论】:
-
有一篇关于permutations by Eric Lippert的不错的博客
-
我的问题似乎与排列无关,例如,我对
[B, A]不感兴趣? -
@Yuval Izzchakov:请重新打开我的问题,这不是重复的,谢谢。
-
您需要保持排列中对象的顺序吗?因为除非你这样做,否则
[A,B]与[B,A]有何不同? -
我认为 OP 需要他展示的输出,他不需要所有可能的组合
标签: c# linq linq-to-objects