2
如果我有这样的语句:SQLite.net .FirstOrDefault首先返回每一行,然后用where查询那些?
return _sqlconnection.Table<Student>().FirstOrDefault(t => t.Id == id);
将在第一次检索所有的学生,然后选择通过再找到ID匹配那里还是会知道发送SQL语句的数据库与WHERE条款?
如果我有这样的语句:SQLite.net .FirstOrDefault首先返回每一行,然后用where查询那些?
return _sqlconnection.Table<Student>().FirstOrDefault(t => t.Id == id);
将在第一次检索所有的学生,然后选择通过再找到ID匹配那里还是会知道发送SQL语句的数据库与WHERE条款?
在SQLite.Net PCL中,它看起来像FirstOrDefault()被转换为极限1查询。然而,就你而言,你正在将谓词应用到FirstOrDefault。这将导致整个表被加载,因为SQLite.Net不能很好地处理复杂的Linq。
如果你想确保整个表是不装,走的是这样的:
return _sqlconnection.Table<Student>().Where(t => t.Id == id).FirstOrDefault();
有一个在有关此主题的Xamarin论坛上good thread。