2012-09-12 120 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