查询对象中的“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
.
我在学习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
.