如何高效通过Linq选择列表中特定索引位置的类属性?
无需创建中间List的优化实现
针对你的场景,完全可以跳过创建Ts这个中间List的步骤,直接通过索引从microstructures中获取目标属性,以下是两种简洁高效的实现方式:
方式一:直接遍历索引(最直观)
提前初始化结果List的容量可以避免多次扩容,进一步提升效率:
var indices = new List<int>() {1, 3, 7, 15, 30, 50}; var list = new List<double>(indices.Count); foreach (var index in indices) { list.Add(microstructures[index].T); }
方式二:Linq简洁写法
用Linq直接对indices做映射,一步得到结果:
var indices = new List<int>() {1, 3, 7, 15, 30, 50}; var list = indices.Select(i => microstructures[i].T).ToList();
补充说明
你的数据规模很小(microstructures元素数<100,indices仅约10个),几种写法的性能差异几乎可以忽略,但上述两种方式都避免了额外的中间List创建,减少了不必要的内存占用,代码逻辑也更紧凑。如果后续microstructures规模大幅增长,这种优化的收益会更显著。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

