gpt4 book ai didi

c# - 使用 IEnumerable 生成的序列

转载 作者:行者123 更新时间:2023-11-30 21:04:20 27 4
gpt4 key购买 nike

我想使用 IEnumerable 生成一个值序列——具体来说,是一个类似 Excel 的列标题列表。

private IEnumerable<string> EnumerateSymbolNames()
{
foreach (var sym in _symbols)
{
yield return sym;
}

foreach (var sym1 in _symbols)
{
foreach (var sym2 in _symbols)
{
yield return sym1 + sym2;
}
}

yield break;
}
private readonly string[] _symbols = new string[] { "A", "B", "C", ...};

如果我从 foreach 循环中获取值,这会很好地工作。但我想要的是将迭代器 block 用作状态机并获取下一个可用列标题以响应用户操作。而这 - 使用生成的值 - 是我遇到麻烦的地方。

到目前为止我已经尝试过了

return EnumerateSymbolNames().Take(1).FirstOrDefault();

return EnumerateSymbolNames().Take(1).SingleOrDefault();

return EnumerateSymbolNames().FirstOrDefault();

var enumerator = EnumerateSymbolNames().GetEnumerator();
enumerator.MoveNext();
return enumerator.Current;

...但是这些都没有用。 (全部重复返回“A”。)基于对 this question 的回复,我什至想知道我想要什么是可能的——尽管对该帖子的一些回复建议使用与我上一个相似的技术。

不,这不是家庭作业:)

最佳答案

当您使用 GetEnumerator 时,您需要为每次迭代使用相同的枚举器。如果您第二次调用 GetEnumerator,它将从集合的开头重新开始。

如果要使用Take,必须先Skip已经处理的记录数。

关于c# - 使用 IEnumerable 生成的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477300/

27 4 0