You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#与Lambda如何从嵌套List的对象属性中获取去重列表

实现方案

你可以借助LINQ的SelectMany方法摊平嵌套集合,配合后续操作一行实现需求,正确写法如下:

List<string> productIds = orders
    .SelectMany(order => order.Products) // 展开所有订单下的商品集合为一维商品序列
    .Select(product => product.ID) // 提取所有商品的ID属性
    .Distinct() // 对ID去重
    .ToList();

如果需要更精简的写法,可以直接用SelectMany的重载直接映射结果,省略单独的Select步骤:

List<string> productIds = orders.SelectMany(o => o.Products, (_, p) => p.ID).Distinct().ToList();

补充说明

你原先的写法报错是因为orders是Order类型的集合,本身没有Products属性,必须先遍历每个Order实例取出对应的Products嵌套集合,再做后续的提取、去重操作。

内容的提问来源于stack exchange,提问作者Hoss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:24:03