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

如何使用LINQ按Analyte分组聚合对应的Units列表

使用LINQ聚合AnalyteUnits数据

你的需求是将多个AnalyteUnits实例按Analyte字段分组,把同一分析物对应的所有单位收集为集合。以下是具体的LINQ实现方式:

步骤1:准备数据源

假设你已经有了包含所有AnalyteUnits对象的集合,示例代码如下:

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

// 示例数据源
var analyteData = new List<AnalyteUnits>
{
    new AnalyteUnits { Analyte = "Ce", Units = "kg" },
    new AnalyteUnits { Analyte = "Fe", Units = "%" },
    new AnalyteUnits { Analyte = "Fe", Units = "g" }
};

步骤2:用LINQ分组聚合

通过GroupBy按Analyte分组,再用Select转换为你需要的格式:

var groupedResult = analyteData
    .GroupBy(item => item.Analyte)
    .Select(group => new 
    {
        analyte = group.Key,
        units = group.Select(item => item.Units).ToList()
    });

步骤3:验证输出

如果要打印出你指定的格式,可以遍历结果:

foreach (var result in groupedResult)
{
    var unitsStr = string.Join(", ", result.units.Select(u => $"\"{u}\""));
    Console.WriteLine($"analyte = \"{result.analyte}\", units = {{{unitsStr}}}");
}

输出结果会是:

analyte = "Ce", units = {"kg"}
analyte = "Fe", units = {"%", "g"}

可选:使用强类型替代匿名对象

如果需要强类型的结果集,可以定义一个专门的类:

class GroupedAnalyte
{
    public string Analyte { get; set; }
    public List<string> Units { get; set; }
}

然后修改Select部分:

var groupedResult = analyteData
    .GroupBy(item => item.Analyte)
    .Select(group => new GroupedAnalyte
    {
        Analyte = group.Key,
        Units = group.Select(item => item.Units).ToList()
    });

内容的提问来源于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 19:22:14