有
public static IEnumerable<long> FibonacciNumbers() {
long current = 0;
long next = 1;
while (true) {
long previous = current;
current = next ;
next = previous + next;
yield return current;
}
}
我可以得到小于 100 的第一个斐波那契数
var series = FibonacciNumbers().TakeWhile(num => num < 100);
只是好奇,我该如何使用查询语法来做到这一点?
最佳答案
您不会 - C# 查询表达式中没有任何内容对应于 TakeWhile
(或 Take、Skip、SkipWhile 等)。 C# 查询表达式相对有限,但涵盖了一些大问题:
- 选择(通过
select
和let
) - 哪里(通过
哪里
) - SelectMany(通过辅助
from
子句) - OrderBy/ThenBy(和降序)(通过
orderby
子句) - 加入(通过
join
子句) - GroupBy(通过
groupby
子句) - GroupJoin(通过
join ... into
子句)
VB 9's query support更广泛一些,但我个人喜欢 C# 的方法 - 它使语言相对简单,但您仍然可以通过点表示法做任何您想做的事情。
关于c# - TakeWhile 使用查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063577/