LINQ到对象优化技术?

时间:2010-02-27 16:45:11

标签: performance optimization linq-to-objects

您使用或使用过的LINQ to Objects优化技术是什么?

在等待“产生foreach”和其他语言/编译器优化到201x中的C#时,我很有意思尽一切可能使LINQ在任何地方使用,而不是性能上的痛苦。

到目前为止,我看到的一种模式是为特定的组合器创建自定义的IEnumerable实现,这样就不会多次重新枚举可枚举。

1 个答案:

答案 0 :(得分:10)

我发现了几次 - 不要使用:

if (query.Count() > 0)

...请改用:

if (query.Any())

这样只需要找到第一场比赛。

编辑:您可能还对blog post I recently wrote关于可以在LINQ to Objects中但不是(或不在.NET 3.5中)的优化感兴趣。

此外,如果您要进行大量x.Contains(y)次操作,x是现有查询的结果(即它不会是某些优化的集合),您可能应该考虑从HashSet<T>构建x,以避免在每次迭代时进行线性扫描(执行查询以生成x的结果)。