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

使用LINQ GroupBy将AnalyteUnitPair列表转换为AnalyteUnits列表

用LINQ GroupBy实现AnalyteUnitPair到AnalyteUnits的转换

现有定义与数据

源类定义

public class AnalyteUnitPair
{
    public string Analyte { get; set; }
    public string Unit { get; set; }
}

源数据实例

Analyte ="Ce", Unit="g"
Analyte ="Ce", Unit="%"
Analyte ="Ce", Unit="ppm"
Analyte ="Dy", Unit="kg"
Analyte ="Dy", Unit="%"
Analyte ="Dy", Unit="ppm"

目标定义与转换要求

目标类定义

public class AnalyteUnits
{
    public string Analyte { get; set; }
    public string Units { get; set; }
}

转换后实例格式

Analyte="Ce", Units="g:g,%:%,ppm:ppm";
Analyte="Dy", Units="kg:kg,%:%,ppm:ppm";

要求使用LINQ的GroupBy方法实现,不采用Dictionary方案。

实现代码

// 初始化源数据列表
List<AnalyteUnitPair> analyteUnitPairs = new List<AnalyteUnitPair>
{
    new AnalyteUnitPair { Analyte = "Ce", Unit = "g" },
    new AnalyteUnitPair { Analyte = "Ce", Unit = "%" },
    new AnalyteUnitPair { Analyte = "Ce", Unit = "ppm" },
    new AnalyteUnitPair { Analyte = "Dy", Unit = "kg" },
    new AnalyteUnitPair { Analyte = "Dy", Unit = "%" },
    new AnalyteUnitPair { Analyte = "Dy", Unit = "ppm" }
};

// 通过GroupBy完成转换
List<AnalyteUnits> analyteUnitsList = analyteUnitPairs
    .GroupBy(pair => pair.Analyte)
    .Select(group => new AnalyteUnits
    {
        Analyte = group.Key,
        Units = string.Join(",", group.Select(unitPair => $"{unitPair.Unit}:{unitPair.Unit}"))
    })
    .ToList();

代码说明

  • 调用GroupBy按Analyte字段分组,将同元素的项聚合到同一分组中
  • 对每个分组,先将组内的Unit转换为Unit:Unit格式,再用string.Join拼接成逗号分隔的字符串,赋值给Units属性
  • 最后将分组结果映射为AnalyteUnits实例并转为列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:12:09