如果linq查询返回空,它是否返回null?

Zap*_*ica 3 linq entity-framework

我有以下linq查询:

     vm.logs = (from l in db.ActivityLogs
                   orderby l.Time
                   select l).Take(2);
Run Code Online (Sandbox Code Playgroud)

如果db表为空,这将返回null吗?

如果不是,我如何检测查询是否确实返回任何信息?

And*_*bel 7

它将返回IEnumerable<ActivityLog>没有元素的东西.

要检查是否有任何元素,请使用以下Any()方法:

if(!logs.Any())
{
   Console.WriteLine("No elements found.");
}
Run Code Online (Sandbox Code Playgroud)

另请注意,在编写它时,vm.logs将进行延迟评估,也就是说,在使用之前不会从数据库中获取它.如果您先执行a .Any()然后再访问查询的内容,则会在数据库中执行两个查询.为避免这种情况,通过向ToList()查询添加a 来实现(强制执行查询):

 vm.logs = (from l in db.ActivityLogs
               orderby l.Time
               select l).Take(2).ToList();
Run Code Online (Sandbox Code Playgroud)