如何使用LINQ替代ForEach将Pair对象的Guid属性转为列表?
解决方案
当然有,可以用LINQ的SelectMany方法来替代,它能把每个Pair对象拆分成包含两个Guid的序列,再将所有序列合并成一个完整的集合,写法更简洁且符合LINQ的声明式风格:
var ids = payload.Pairs .SelectMany(x => new[] { x.FirstId, x.SecondId }) .ToList();
说明
SelectMany会遍历payload.Pairs中的每个Pair对象,将每个对象转换为一个包含FirstId和SecondId的Guid数组。- 最终所有数组中的元素会被扁平化为一个单一的序列,最后调用
ToList()直接得到List<Guid>,不需要手动初始化列表再逐个Add元素。 - 原代码里的
.ToList()在调用ForEach前是多余的(只要payload.Pairs实现了IEnumerable<Pair>接口),用SelectMany的写法可以完全省去这一步。
内容的提问来源于stack exchange,提问作者DarkLeafyGreen
相关产品推荐
相关产品推荐

