假设我有以下通用组合生成器静态方法:
public static IEnumerable<IEnumerable<T>> GetAllPossibleCombos<T>(
IEnumerable<IEnumerable<T>> items)
{
IEnumerable<IEnumerable<T>> combos = new[] {new T[0]};
foreach (var inner in items)
combos = combos.SelectMany(c => inner, (c, i) => c.Append(i));
return combos;
}
也许我没有正确理解这一点,但这不是在 RAM 中构建整个组合列表吗?如果有大量项目,该方法可能会导致计算机内存不足。
有没有办法重写方法以yield return在每个组合上使用 a ,而不是返回整个组合集?
杨魅力
繁花不似锦
相关分类