我使用的對象集的方法來做各種查詢的表,即從中選擇幾個記錄這樣:對象集的Where()方法和內存
var results = Repository.Find(c => c.Enabled == 1).ToList();
這裏的查找方法我庫:
public IEnumerable<T> Find(Func<T, bool> predicate)
{
try
{
return _objectSet.Where<T>(predicate);
}
catch
{
throw;
}
}
現在,如果在目標表大約1,000,000條記錄,我可以看到進程的內存使用量增長了不少,即使查找呼叫我在做應該返回幾個記錄最。
似乎所有的記錄被拉到客戶端,然後過濾。這顯然不是我想讓LINQ做的事情。
你看到什麼明顯的錯誤與我在做什麼?
在此先感謝。
不使用IEnumerable它將每個數據行一次拉到內存中,而不是您應該使用IQueryable –
MUG4N
2013-02-08 15:09:23
您的Find方法完全沒有任何生產效率。你爲什麼不直接在'Repository'上直接使用'Where'? – Servy 2013-02-08 15:11:42
@ MUG4N他只使用它的輸出,應該已經過濾了,所以這不是問題。 – Servy 2013-02-08 15:12:56