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。