读书人

ElementAt 的性能有关问题

发布时间: 2012-03-30 17:32:09 作者: rapoo

ElementAt 的性能问题
有一个linq操作的结果得到 var T ,T是一个double的序列,序列长度是100.

我需要从T中取出 指定位置的3个值,第一个,中间一个,最后一个。

问题是: 我是直接用ElementAt做三次好,还是先转成ToArray()之后用索引访问好?

另外,如果不是3个值,是50个值呢?







[解决办法]
var query=list.Select((l,index)=>new{Key=index,Value=l})
.Where(p=>new int[]{0,49,99}.Contains(p.Key));

[解决办法]
如果你不知道“一个double的序列”到底是哪一种序列,就不要胡乱使用 ElementAt。它只是对IList才使用索引,对于其它的当然是从到尾枚举一次。比如说它是一个一般的linq查询,linq查询是延迟的,那么你写ElementAt三次,其实就会让这个linq查询重复执行三次,反而失去了“延迟”的意义,反而画蛇添足了。

读书人网 >.NET

热点推荐