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

如何优化Linq实现Ticket列表映射?寻求更优实现方案

优化方案:用LINQ链式调用简化实现

嘿,你的现有代码完全能实现需求,但我们可以利用LINQ的链式调用特性,把代码变得更简洁、更符合声明式编程风格,同时去掉手动的foreach循环和临时列表的手动维护。

优化后的代码如下:

List<Ticket> results = lines
    .GroupBy(x => x.TicketNumber)
    .Select(group => new Ticket
    {
        TicketLines = group.Select(g => new TicketLine
        {
            TicketNumber = g.TicketNumber,
            TicketItem = g.TicketItem,
            Qty = g.Qty,
            ProductNumber = g.ProductNumber
        }).ToList()
    })
    .ToList();

优化点说明:

  • 去掉了手动创建的results临时列表和foreach循环中的Add操作,直接通过ToList()把LINQ查询的结果转换为最终的List<Ticket>
  • 代码逻辑更紧凑,把分组、转换Ticket对象、转换TicketLine对象的逻辑整合在一条LINQ链中,可读性更强
  • 保持了原代码的所有功能:按TicketNumber分组,每个分组对应一个Ticket,分组内的每条数据对应一个TicketLine

这个实现和你原来的代码功能完全一致,但代码量更少,也更符合C#中LINQ的惯用写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:57:35