如何用Linq从对象列表的列表属性中提取唯一pIds列表
获取唯一pIds集合的解决方案
你需要用SelectMany替代Select来扁平化嵌套的列表,再结合Distinct去重,就能得到目标结果。
正确代码示例:
var pIds = oldList.Images.SelectMany(img => img.pIds) .Distinct() .ToList();
代码说明:
SelectMany:将每个图片对象中的pIds列表展开,把嵌套的List<string>序列转换为单一的string元素序列,解决了你之前得到"列表的列表"的问题。Distinct():自动移除序列中的重复ID,只保留唯一值。ToList():将最终处理后的序列转换为List<string>类型,符合你需要的结果格式。
另外注意:你原代码里写的是p.Ids,但你的数据结构中属性名是pIds,要确保代码里的属性名和实际数据结构一致,避免拼写错误。
执行上述代码后,得到的pIds就是["id1","id2"],完全符合你的需求。
内容的提问来源于stack exchange,提问作者sapter
相关产品推荐
相关产品推荐

