c# - TakeWhile 使用查询语法

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

只是好奇,我该如何使用查询语法来做到这一点?

最佳答案

您不会 - C# 查询表达式中没有任何内容对应于 TakeWhile(或 Take、Skip、SkipWhile 等)。 C# 查询表达式相对有限,但涵盖了一些大问题:

  • 选择(通过selectlet)
  • 哪里(通过哪里)
  • 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/

相关文章:

c# - linq查询查找最大值和最小值的对象

linq - 如何辨别 Type 是否是静态数组初始值设定项?

c# - 无法添加对 'Microsoft Windows Installer Object Library' 的引用

c# - 什么是 Html.EditorFor 的标签助手等价物

c# - 在 visual studio 中快速轻松重构

c# - LINQ 根据对象行中的整数获取 10 个对象

c# - 使用 LINQ 从树数据结构中获取级别的最佳方法是什么?

c# - 无法从其他类更改表单中的 textBox.text - C# - VS 2010

c# - 是否可以提供多个约束作为类型参数?

c# - LINQ 相交但将结果添加到新列表