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

如何用LINQ一行代码从Dto的两个集合中获取去重的PortfolioCode

问题描述

现有如下对象结构:

public class Dto
{
  public List<OrderTypeA> AOrders {get;set;}
  public List<OrderTypeB> BOrders {get;set;}
}
public class OrderTypeA
{
  public string PortfolioCode {get;set;}
}
public class OrderTypeB
{
  public string PortfolioCode {get;set;}
}

需要从Dto对象的AOrders和BOrders两个集合中,提取并去重得到唯一的PortfolioCode列表,要求用一行LINQ代码实现。

解决方案

可以通过投影属性+合并去重的方式实现,有两种简洁写法:

写法1:使用Concat + Distinct

var uniquePortfolioCodes = dto.AOrders.Select(a => a.PortfolioCode).Concat(dto.BOrders.Select(b => b.PortfolioCode)).Distinct().ToList();

写法2:使用Union(更精简)

var uniquePortfolioCodes = dto.AOrders.Select(a => a.PortfolioCode).Union(dto.BOrders.Select(b => b.PortfolioCode)).ToList();
说明
  • 先通过Select分别从两个订单集合中提取PortfolioCode属性,将不同类型的集合统一转换为string序列;
  • Concat仅负责合并两个序列,需要搭配Distinct手动完成去重;
  • Union本身自带合并并自动去重的特性,因此无需额外调用Distinct,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:12:10