如果可以foreach用于這樣的簡單查詢?還是我應該總是使用查詢的東西?
public static Staff GetTeacher(Context context, int staffId)
{
foreach (Staff staff in context.Staff)
{
if(staff.StaffID == staffId)
{
return staff;
}
}
return null;
}
public static object GetTeacher(Context context, int staffId)
{
var staff = from teacher in context.Staff
where teacher.StaffID == staffId
select new
{
Id = teacher.StaffID,
Teacher = teacher.FirstName " " teacher.LastName
};
return staff;
}
uj5u.com熱心網友回復:
將foreach遍歷資料庫表中的每條記錄,直到找到匹配項,這意味著它最終可能會將每條記錄拉入記憶體。這可能非常慢。
Linq 查詢將構造一個只提取相關記錄的 SQL 陳述句。
所以第二種選擇要好得多。但是,您似乎試圖通過使函式回傳一個物件來解決您的第二個查詢給出一個可列舉的人員物件串列的事實。相反,您可以使整個事物看起來更好,如下所示:
public static Staff GetTeacher(Context context, int staffId)
{
return context.Staff.Single(s => s.StaffID == staffId);
}
這將是最有效的方法。如果資料庫中沒有匹配,它將拋出例外staffId。這對你來說可能是件好事。如果沒有,請將其更改為使用SingleOrDefault而不是Single.
旁注:我擔心方法是static. 這表明 DbContext 可能是共享的或長期存在的,這都是壞事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459598.html
