var messages = list.GroupBy(p=>p.RefOrderNo,(k,v)=> new {OrderNo = k,SkuInfo = v})
.Select(p =>
{
var item = p.SkuInfo.FirstOrDefault();
return new ReplaceLabelSkuMessage
{
OrderNo = p.OrderNo,
Operation = new WMS.Message.Operation
{
Operator = item.CreateBy,
OperateTime = item.CreateOn
},
ReplaceLabelSkuDetail = p.SkuInfo.Select(s => new ReplaceLabelSkuDetail
{
SKU = s.SKU,
Weight = s.Weight,
Lenght = s.Lenght,
Width = s.Width,
Height = s.Height
}).ToList()
};
});
var request = deliveryList.GroupBy(g => g.DeliveryNo)
.Select(delivery =>
{
var item = delivery.FirstOrDefault();
var yewuRequest = new DeliveryTicketShipOutMessage
{
DeliveryTicketNo = item.DeliveryNo,
DeliveryType = TMS.Message.DeliveryTicket.DeliveryType.Logistics,
WarehouseCode = item.YewuWarehouseCode,
ShipOutWarehouse = item.YewuWarehouseCode, SkuContainers = delivery.GroupBy(g => g.ContainerCode).Select(container =>
{
var containerLine = container.FirstOrDefault();
return new LogisticsDeliveryShipOutCustomerAsnContainerRequest
{
ContainerId = containerLine.ContainerCode,
customerOrderType = TMS.Message.Common.CutomerOrderType.First,
TargetWarehouseCode = containerLine.TargetWarehouseCode,
CustomerAsnId = containerLine.CustomerAsnId,
PalletId = containerLine.PalletId,
Weight = new Weight { Value = containerLine.Weight, Unit = WeightUnit.G },
Size = new Packing() { Length = containerLine.Length, Width = containerLine.Width, Height = containerLine.Height, Unit = LengthUnit.CM }, Lines = container.GroupBy(l => l.SKU).Select(line =>
{
return new LogisticsDeliveryShipOutCustomerAsnContainerLineRequest
{
SKU = line.Key,
Quantity = line.Sum(s => s.PackingQty),
AccountNo = line.FirstOrDefault().CustomerCode
};
}).ToList(), Bags = container.Where(p => p.BagCode.Length > ).GroupBy(g => g.BagCode).Select(bag =>
{
var bagid = bag.Key;
return new LogisticsDeliveryShipOutCustomerAsnContainerBagRequest
{
BagId = bagid,
Lines = bag.Select(bagline => new LogisticsDeliveryShipOutCustomerAsnContainerBagLineRequest
{
SKU = bagline.SKU,
Quantity = bagline.PackingQty,
AccountNo = bag.FirstOrDefault().CustomerCode
}).ToList()
};
}).ToList()
};
}).ToList(),
OperateBy = item.CreateBy,
OperateOn = item.CreateOn
}; return yewuRequest;
}).ToList();

二段Linq Groupby操作的更多相关文章

  1. Linq分组操作之GroupBy,GroupJoin扩展方法源码分析

    Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...

  2. Linq查询操作之排序操作

    在Linq中排序操作可以按照一个或多个关键字对序列进行排序.其中第一个排序关键字为主要关键字,第二个排序关键字为次要关键字.Linq排序操作共包含以下5个基本的操作. 1.OrderBy操作,根据排序 ...

  3. Linq 数据库操作(增删改查)

    Linq数据库增删改查 Linq是一种查询语言,集成包含在formwork中,包含在C#语言中,它的作用是降低查询的门槛,提高开发效率,是我们必须掌握的技术之一,下面是我自己对linq数据库操作的方法 ...

  4. Linq 集合操作

    Linq 集合操作 演示代码 两个对象一个是Person,一个Address, AddressId是外键, public class Person { public string ID { get; ...

  5. 聊聊flink Table的groupBy操作

    本文主要研究一下flink Table的groupBy操作 Table.groupBy flink-table_2.11-1.7.0-sources.jar!/org/apache/flink/tab ...

  6. Linq集合操作之Intersect,Except,Union源码分析

    Linq集合操作之Intersect,Except,Union源码分析 linq的集合运算 常见的集合运算有哪些? 这三个扩展方法在我们实际使用中用的还是非常多的,而且这里还涉及到了“复杂度” 无算法 ...

  7. Linq限定操作之All,Any,Contains源码分析

    Linq限定操作之All,Any,Contains源码分析 linq的限定操作 常见的限定操作: All,Any,Contains 一:All 1. 解释: 确定序列中的所有元素是否满足条件. 从字面 ...

  8. Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析

    Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析 一:Linq的聚合运算 1. 常见的聚合运算:Aggregate,Count, Sum, Distinct,Max, ...

  9. Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析

    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析 Linq的四种生成运算 DefautIfEmpty,Empty,Range,Repeat 也就是给我们初始化 ...

随机推荐

  1. 【转】java中创建对象的方法

    有4种显式地创建对象的方式: 1.用); System.out.println("call default constructor"); } public Customer(Str ...

  2. 【Codeforces】Educational Codeforces Round 46(Contest 1000)

    题目 传送门:QWQ A:Codehorses T-shirts 题意: 给定一些字符串表示去年和今年的衣服型号大小( XL XXL M...... ),要求用最少的次数把去年的衣服大小改成今年需要的 ...

  3. JVM实例以及内存的分配机制

    JVM:一台用来模拟计算机执行计算指令的虚拟计算机,拥有自己的指令,指令执行环境,虚拟内存等. 下面介绍虚拟机(JVM)--cpu,寄存器,内存,指令 ======================== ...

  4. 代理Servlet过滤器

    Spring Security借助一些列Servlet 过滤器 来提供 各种 安全性功能. 我们只需要在应用中的 web.xml 中配置 一个过滤器. <filter> <filte ...

  5. 20165233 实验二 Java面向对象程序设计

    20165233 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  6. 「小程序JAVA实战」小程序视频处理工具ffmpeg(47)

    转自:https://idig8.com/2018/09/16/xiaochengxujavashizhanxiaochengxushipinchuligongjuffmpeg46/ 前面已经把视频成 ...

  7. MS SQL Server 无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)

    因为 服务器 的名字 更改过 use   msdb     go         SP_CONFIGURE   'ALLOW UPDATES',1   RECONFIGURE   WITH   OVE ...

  8. 6 MySQL--表--完整性约束

    参考:https://www.cnblogs.com/alice-bj/p/8824693.html 完整性约束: http://www.cnblogs.com/linhaifeng/articles ...

  9. SpringMVC @RequestBody请求参数在postman中的请求

    使用SpringMVC框架,controller使用参数  @RequestBody  LoginReq req   注解方式模拟http请求 需要请求header添加一个参数 设置  Header参 ...

  10. 解决Notepad++ Plugin Manager无法加载插件的方法

    今天正好安装了Notepad++,结果发现Plugin Manager里插件一个也没有,网上对应的方法都没有,最后无意间看到Plugin Manager Settings 里的提示,试了一下居然成功了 ...