TakeWhile使用查询语法

时间:2010-01-14 10:56:29

标签: c# linq

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);

只是好奇,我该如何使用查询语法?

2 个答案:

答案 0 :(得分:5)

你不会 - 在C#查询表达式中没有任何内容与TakeWhile(或Take,Skip,SkipWhile等)相对应。 C#查询表达式相对有限,但涵盖了biggies:

  • 选择(通过selectlet
  • 其中(通过where
  • SelectMany(通过辅助from条款)
  • OrderBy / ThenBy(和降序)(通过orderby条款)
  • 加入(通过join条款)
  • GroupBy(通过groupby条款)
  • GroupJoin(通过join ... into条款)

VB 9's query support有点广泛,但我个人喜欢C#的方法 - 它使语言相对简单,但你仍然可以通过点表示法做你想做的一切。

答案 1 :(得分:0)

在LINQ中没有内置语法。此外,在LINQ中编写它会更加冗长,并且不会真正有助于清晰,因此在这种情况下没有真正的需要。

此外,您应该在此使用Take而不是TakeWhile