当没有匹配项时,LINQ 函数究竟返回什么?以Where方法为例:
var numbers = Enumerable.Range(1, 10);
var results = numbers.Where(n => n == 50);
此时结果会是什么?
最佳答案
results
本身只是一个查询。在您开始遍历它之前(明确地或通过 Count()
之类的调用),没有任何东西检查是否有任何结果。只有当你枚举它时,才会发生任何事情。
所以你可以这样做:
foreach (int x in results)
{
Console.WriteLine("This won't happen");
}
或者:
Console.WriteLine(results.Any()); // Will print false
Console.WriteLine(results.Count()); // Will print 0
任何这些都会导致针对范围中的每个项目评估谓词......但在此之前,它根本不会被调用。
理解这一点很重要,因为这意味着 results
不能 为 null
同时保留惰性求值的特性 -在您尝试使用 results
之前,它不会确定它是否应该为 null
!
关于c# - 没有匹配项时的 LINQ 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533155/