如果我有这样的声明:

return _sqlconnection.Table<Student>().FirstOrDefault(t => t.Id == id);

第一个是否会检索所有学生,然后通过然后选择以查找 Id 匹配的位置,还是会知道使用 WHERE 子句将 SQL 语句发送到数据库?

最佳答案

在 SQLite.Net PCL 中,看起来 FirstOrDefault() 被转换为限制 1 查询。但是,在您的情况下,您将谓词应用于 FirstOrDefault。这将导致整个表被加载,因为 SQLite.Net 不能非常优雅地处理复杂的 Linq。

如果你想确保整个表是 而不是 加载,请执行以下操作:

return _sqlconnection.Table<Student>().Where(t => t.Id == id).FirstOrDefault();

Xamarin 论坛中有关于此主题的 good thread

关于sqlite - SQLite.net .FirstOrDefault 是否首先返回每一行,然后用 where 查询那些行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40188752/

10-12 05:36