我有一些代碼,在循環中改變我的數據庫中的一些數據的值。我只是想知道什麼是首先過濾數據的最有效方式?我舉一個例子: -使用實體框架,哪種方法更高效?
隨着等級: -
public class myObj
{
int id {get;set;}
string product {get; set;}
string parent{get;set;}
int received {get;set;}
}
而且的DbContext: -
public class myCont:DbContext
{
public DbSet<myObj> myObjs {get;set;}
}
是更好地做到這一點: -
int[] list;
/* Populate list with a bunch of id numbers found in myOBjs */
myCont data = new myCont();
myObj ob = data.myObjs.Where(o => o.parent == "number1");
foreach(int i in list)
{
ob.First(o => o.id == i && o.received != true).received = true;
}
或者: -
int[] list;
/* Populate list with a bunch of id numbers found in myOBjs */
myCont data = new myCont();
foreach(int i in list)
{
data.myObjs.First(o => o.parent == "number1" && o.id == i && o.received != true).received = true;
}
還是沒有區別?
嘗試基準測試 –
您可以使用sql配置文件檢查linq生成的命令 – uowzd01
僅當代碼遍歷IQueryable時纔會生成sql查詢。 EF延遲執行,直到需要實現對象。 –