//第一个集合为所有的数据

var specilist = new List<Me.SpecificationsInfo>();

var resultall = (from a in dbContext.by_sku_items
                                        join b in dbContext.by_attributes on a.by_attributes_id equals b.by_attributes_id
                                        join c in dbContext.by_attribute_values on a.by_attribute_values_id equals c.by_attribute_values_id
                                        where a.by_product_id == proid
                                        select new Me.OrderEditAll
                                        {
                                            skuid = a.by_sku_items_id,
                                            colorid = b.by_attributes_id,
                                            color = b.attributes_name,
                                            sizeid = c.by_attribute_values_id,
                                            size = c.value_str
                                        }).ToList();

//第二个集合为需要合并的集合
                        var orderitemlist = dbContext.by_order_item.Where(t => t.order_id == _orderid && t.by_product_id == proid).ToList();
                        var resultorder = (from a in orderitemlist
                                     join b in dbContext.by_sku_items on a.by_sku_items_id equals b.by_sku_items_id
                                     join c in dbContext.by_attributes on b.by_attributes_id equals c.by_attributes_id
                                     join d in dbContext.by_attribute_values on b.by_attribute_values_id equals d.by_attribute_values_id
                                     //where b.status == statusWorking && c.status == statusWorking && d.status == statusWorking
                                     orderby c.index, d.index
                                     select new Me.OrderEdit
                                     {
                                         skuid = a.by_sku_items_id,
                                         id = a.by_order_item_id,
                                         nums = a.nums,
                                         colorid = c.by_attributes_id,
                                         color = c.attributes_name,
                                         sizeid = d.by_attribute_values_id,
                                         size = d.value_str
                                     }).ToList();

//第三个为最终结果,将不为空的数据合并到所有集合中
                        var result = (from all in resultall
                                     join order in resultorder on all.skuid equals order.skuid into temp
                                     from tt in temp.DefaultIfEmpty()
                                     select new Me.OrderEdit
                                     {
                                         skuid = all.skuid,
                                         id = tt != null ? tt.id : 0,
                                         nums = tt != null ? tt.nums : 0,
                                         colorid = all.colorid,
                                         color = all.color,
                                         sizeid = all.sizeid,
                                         size = all.size

}).ToList();

//第二种为sql实现方式

select by_sku_items_id,sum(t1.by_order_items_id) as by_order_items_id,sum(t1.nums) as nums,t1.by_attributes_id,t1.attributes_name,t1.by_attribute_values_id,t1.value_str from 
(
select  * from (
select * from 
(select a.by_sku_items_id,0 as by_order_items_id,0 as nums,b.by_attributes_id,b.attributes_name,c.by_attribute_values_id,c.value_str from by_sku_items a
join by_attributes b on a.by_attributes_id=b.by_attributes_id
join by_attribute_values c on a.by_attribute_values_id=c.by_attribute_values_id
where by_product_id=9 ) aa
UNION 
select * from (
select a.by_sku_items_id,a.by_order_item_id,a.nums,c.by_attributes_id,c.attributes_name,d.by_attribute_values_id,d.value_str
from by_order_item a
join by_sku_items b on a.by_sku_items_id=b.by_sku_items_id
join by_attributes c on b.by_attributes_id=c.by_attributes_id
join by_attribute_values d on b.by_attribute_values_id=d.by_attribute_values_id
where b.status=2 and c.status=2 and d.status=2 
and a.order_id=1459428164000004 and a.by_product_id=9
) bb
) t 
) t1 group by by_sku_items_id,by_attributes_id,by_attribute_values_id,attributes_name,value_str

linq 左连接实现两个集合的合并的更多相关文章

  1. GroupBy分组的运用和linq左连接

    最简单的分组 var conHistoryList = conHistoryData.GroupBy(g => g.personId); 就是conHistoryData是一个IQueryabl ...

  2. Linq Left Join;linq左连接 (转载)

    来源 https://www.cnblogs.com/xinjian/archive/2010/11/17/1879959.html 准备一些测试数据,如下: use Test Create tabl ...

  3. mysql---union和左连接的两倒面试题

    第一道: 思路:无非是将hid与gid与t表中的tname关联起来.实质上是三表关联(m,t,t) 先将hid与tname关联起来,运用左连接 再将结果集与t表中的tname关联起来,使得gid与tn ...

  4. C# linq左连接与分组

    1.左连接使用DefaultIfEmpty(): 2.分组时候判断newper.FirstOrDefault() == null ? null: newper.ToList()这个经常出错误,如果不判 ...

  5. linq 左连接后实现与主表一对一关系数据

    var query1 = from r in _residentRepository.GetAll() join i in _inLogRepository.GetAll() on r.Id equa ...

  6. EF to linq 左连接

    如果连接的数据不存在用 null 表示,则可以左连接查询,但是如果数据类型为 int 则会出错. var ng = (from g in _db.NET_NEWS_GROUP join z in _d ...

  7. Linq 左连接 left join

    Suppose you have a tblRoom and tblUserInfo. Now, you need to select all the rooms regardless of whet ...

  8. linq左连接

    Table1和Table2连接,把Table1的全列出来 var tempData = from a in table1 join b in table2 on a.Id equals b.aId i ...

  9. linq 左连接

    var list = (from item in vall join item3 in v1 on new { item.FItemID, item.FAuxPropID } equals new { ...

随机推荐

  1. [TJOI2013]拯救小矮人[排序+dp]

    题意 题目链接 分析 Imagine的完美回答 重点大概是证明我们选出要救的小矮人一定可以根据 \(a_i+b_i\) 的大小进行排序救出. 注意这里关注的对象是可以保留的高度,所以我们的dp值才会表 ...

  2. UWP 应用程序名称本地化以及商店显示名称本地化

    大家应该都知道,在做多语言的时候,我们一般会让App名字也会随着语言变化而本地化. 比如我的App微识别 https://www.microsoft.com/store/productId/9PDSN ...

  3. 使用MUART0-P-1-2设置无线PM2.5感测环境

    信息搜集–> 处理分析–> 动作执行,这是IoT环境中最基本的组成要素,传感器搜集环境信息后,透过指定的通讯协议传送到至控制中枢,经过处理分析后再将命令送交各device端执行.要实现这样 ...

  4. python数据分析的工具环境

    python做数据分析的优势: 拥有大量的库为数据分析和处理提供了完整的工具链 随着库还在不断的增加的同时, 算法的实现也更加的创新.Numpy, matplotlib, scipy,scikit-l ...

  5. LR测试报告分析 -详解

    1. 结果摘要 LoadRunner进行场景测试结果收集后,首先显示的该结果的一个摘要信息,如下图所示.概要中列出了场景执行情况.“Statistics Summary(统计信息摘要)”.“Trans ...

  6. PHP核心技术——继承与多态

    继承: class person{ public $name='Tom'; public $gender; static $money=10000; public function __constru ...

  7. 关于MySql数据库主键及索引的区别

    一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里 ...

  8. Flink架构分析之资源分配

    Task Slot     Flink中每个真正执行任务的TaskManager都是一个JVM进程,其在多线程环境中执行一个或者多个子任务.为了控制一个JVM同时能运行的任务数量,flink引入了ta ...

  9. Discuz3.3精仿小米风格整站模板制作——1、新建模板方案

    术语说明: 模板——模板是一堆按照规定命名方式的html文件,用于指定整个论坛不同页面的外观. 标签——标签和模板共同作用以实现论坛换肤功能,其中标签主要控制页面显示什么数据,显示多少条等. 风格—— ...

  10. mybatis学习------打包xml映射文件

    编译mybatis时,idea不会将mybatis的xml映射文件一起打包进jar,即在编译好的jar包里缺少mybatis映射文件,导致网站加载失败 为解决这个问题,可在mybatis对应modul ...