查询对象中的“where”和扩展方法中的“if”之间的区别

Difference between `where` in the query object and `if` in the extension methods

我在学习LINQ.

我不知道在扩展方法中使用 if 和在查询对象中使用 where 之间的区别。

Console.WriteLine()结果是一样的,速度有什么不同吗?

仔细想想,可读性似乎有所不同,但这是我的猜测。

说实话,我知道这是一个无用的好奇,但我对它很好奇,所以我写了它。

我们期待您的来信。

呵呵,文中有什么需要改进的地方,还请指教

...

public static IEnumerable<Student> GetTeenAgerStudents(this IEnumerable<Student> source)
{
  foreach (Student std in source)
  {
    yield return std;
  }
}

...

var teenAgerStudents = from s in studentList.GetTeenAgerStudents()
                       where s.Age >= 10 && s.Age < 20
                       select s;
...

public static IEnumerable<Student> GetTeenAgerStudents(this IEnumerable<Student> source)
{
  foreach (Student std in source)
  {
    if (std.Age >= 10 && std.Age < 20)
          yield return std;
  }
}

...

var teenAgerStudents = from s in studentList.GetTeenAgerStudents()
                       select s;

以上代码引用自https://www.tutorialsteacher.com/linq/linq-deferred-execution.

我准确预测了它们之间的速度差异。 if 更快。但出于易读性原因,最常用的路线在哪里。您可以将 where 理解为 sql 查询。在这里,它从数据集合中筛选出一些数据,并显示适合您的数据。看起来像 T-Sql.