2012-09-12 152 views
0

我有一個只有6個屬性的自定義類的列表。有一個名爲「狀態」Linq在哪裏Lambda超慢

場我讓他們在一個泛型列表

List<House> hList = GetHomes(); //Holds 204 instances of House 
int count = hList.Where(x=>x.status == "sold").ToList().Count(); 

這樣做返回3這是正確的,但它需要10秒才能這樣做。

有沒有更快的方法?

+3

你能張貼GetHomes代碼() –

+1

您可以跳過.ToList(),但我不認爲第二行代碼是問題。 '地位'真的是一個領域或財產? –

+3

你在做什麼'status' getter? – BrokenGlass

回答

4

如果你只需要計數,你可以這樣做:

var count = hList.count(x => x.status == "sold"); 

這將防止迭代3次(適用於哪裏,然後tolist,再算上)

+1

'Where'實際上不會遍歷列表。 Linq使用延遲執行。第一次迭代是在'ToList'上,然後再次在'Count'上。但仍然是一個好點。 – cadrell0