有
public static IEnumerable<long> FibonacciNumbers() {
long current = 0;
long next = 1;
while (true) {
long previous = current;
current = next ;
next = previous + next;
yield return current;
}
}
我可以用
得到第一个斐波那契数字少于100var series = FibonacciNumbers().TakeWhile(num => num < 100);
只是好奇,我该如何使用查询语法?
答案 0 :(得分:5)
你不会 - 在C#查询表达式中没有任何内容与TakeWhile
(或Take,Skip,SkipWhile等)相对应。 C#查询表达式相对有限,但涵盖了biggies:
select
和let
)where
)from
条款)orderby
条款)join
条款)groupby
条款)join ... into
条款)VB 9's query support有点广泛,但我个人喜欢C#的方法 - 它使语言相对简单,但你仍然可以通过点表示法做你想做的一切。
答案 1 :(得分:0)
在LINQ中没有内置语法。此外,在LINQ中编写它会更加冗长,并且不会真正有助于清晰,因此在这种情况下没有真正的需要。
此外,您应该在此使用 Take
而不是TakeWhile
。