SQLite.net .FirstOrDefault是否首先返回每一行,然后查询那些带有哪里?

时间:2016-10-22 05:43:12

标签: sqlite xamarin xamarin.forms sqlite-net

如果我有这样的陈述:

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

首先会检索所有学生,然后通过选择来查找Id匹配的位置,或者知道使用WHERE子句将SQL语句发送到数据库吗?

1 个答案:

答案 0 :(得分:2)

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

如果您想确保整个表格已加载,请执行以下操作:

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

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