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

如何用SQL、Lambda或LINQ无循环实现数据分组与列表更新

没问题!完全可以摆脱循环,用SQL或者LINQ/Lambda轻松搞定你的需求,分两种场景给你具体方案:

1. SQL 数据库直接取数分组方案

如果数据存在数据库里,直接用SQL就能完成修正MainName+分组归类的操作,不用把数据拉到程序里处理。下面以SQL Server为例(其他数据库类似,聚合函数略有差异):

SELECT
  -- 先把XWY修正为XYZ,生成修正后的主名称字段
  CASE WHEN MainName = 'XWY' THEN 'XYZ' ELSE MainName END AS CorrectedMainName,
  -- 把同组的CompanyName用逗号拼接(SQL Server 2017+支持STRING_AGG)
  STRING_AGG(CompanyName, ', ') AS AssociatedCompanies,
  -- 同理拼接ChildName
  STRING_AGG(ChildName, ', ') AS AssociatedChildNames
FROM YourTableName -- 替换成你的实际表名
-- 按修正后的主名称分组
GROUP BY CASE WHEN MainName = 'XWY' THEN 'XYZ' ELSE MainName END;

如果是MySQL数据库,把STRING_AGG换成GROUP_CONCAT即可,语法逻辑完全一致。

2. .NET 列表处理(LINQ/Lambda方案)

如果数据已经在程序的列表里(比如C#的List<T>),用LINQ链式调用就能完成,全程不用写手动循环:

首先假设你的数据模型是这样的:

public class CompanyItem
{
    public string CompanyName { get; set; }
    public string MainName { get; set; }
    public string ChildName { get; set; }
}

然后处理代码:

// 假设companyList是你的原始数据列表
var processedGroups = companyList
    // 第一步:修正MainName,生成新的对象(也可以直接修改原对象,看需求)
    .Select(item => new CompanyItem
    {
        CompanyName = item.CompanyName,
        MainName = item.MainName == "XWY" ? "XYZ" : item.MainName,
        ChildName = item.ChildName
    })
    // 第二步:按修正后的MainName分组
    .GroupBy(item => item.MainName)
    // 第三步:把分组结果转成你需要的结构(比如Key是主名称,值是对应公司集合)
    .Select(group => new
    {
        MainName = group.Key,
        CompanyDetails = group.Select(item => new { item.CompanyName, item.ChildName }).ToList()
    })
    .ToList();

如果你想直接修改原列表里的MainName(而不是生成新对象),可以用List的ForEach方法(虽然不是LINQ扩展,但也不用手动写循环):

// 先修正原列表的MainName
companyList.ForEach(item => item.MainName = item.MainName == "XWY" ? "XYZ" : item.MainName);
// 再分组
var groupedResult = companyList.GroupBy(item => item.MainName)
                              .Select(group => new { 
                                  MainName = group.Key, 
                                  Companies = group.ToList() 
                              })
                              .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:31:02