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

C# 使用Linq将对象两个int属性值合并为去重列表的简化方法

可以通过SelectMany摊平双属性取值实现单链LINQ查询,简化后的写法如下:

var dynamicApiIds = result.Components
    // 每个元素返回两个待提取的可空ID
    .SelectMany(c => new[] { c.DynamicApiChoicesId, c.DynamicApiSubmissionsId })
    // 过滤掉没有有效值的条目
    .Where(id => id.HasValue)
    // 提取ID的有效值
    .Select(id => id.Value)
    // 全局去重
    .Distinct();

逻辑说明

  • 全程只遍历一次Components集合,性能优于拆分多次查询的写法
  • 天然兼容组件仅存在单个有效ID、两个都有有效值的场景,不需要提前过滤集合
  • 代码逻辑连贯,不需要声明多个中间变量

另外你原有实现存在冗余逻辑:Union方法本身已经会对两个集合取并集并自动去重,后续追加的Distinct()是完全多余的,即便不重构整体写法也可以直接移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:15:04