Linq 综合写法
var queryCount = (from pv in db.Province
                                          join pc in (from cc in
         ((from v in db.ERPStockProductTrigger
         join s in db.Storage on v.StorageID equals s.StorageID
         join b in db.BranchSet on s.BranchSetID equals b.Id
         join p in db.Product on v.ProductID equals p.Id
         join c in db.PriceProfile.Where(w => w.Type == 1) on p.Id equals c.ProductID
         where s.RecordStatus == 1 && s.IsDelivery == true && s.IsWholesale == false
                   && b.BranchType == 53 && b.RecordStatus == 1
                   && p.RecordStatus == 1 && p.ProductName.Contains(pager.ProductName) && p.SkuCode.StartsWith(pager.SkuCode)
       select new { p.SkuCode, s.ProvinceCode }).Distinct())
       group cc by cc.ProvinceCode into gc
       select new { ProvinceCode = gc.Key, Pcount = gc.Count() }) on pv.Code equals pc.ProvinceCode into tpc
                                          from ttpc in tpc.DefaultIfEmpty()
join ps in (from cc in (from r in db.SupermarketProducts
             join p in db.Product on r.ProductId equals p.Id
             join c in db.PriceProfile.Where(w => w.Type == 1) on p.Id equals c.ProductID
             where r.Status == 0 && r.IsEnable == 1 && p.ProductName.Contains(pager.ProductName) && p.SkuCode.StartsWith(pager.SkuCode)
             select new { r.SkuCode, ProvinceCode = r.Province })
             group cc by cc.ProvinceCode into gc
            select new { ProvinceCode = gc.Key, Pcount = gc.Count() }) on pv.Code equals ps.ProvinceCode into tps
                                          from ttps in tps.DefaultIfEmpty()
join pt in (from hr in db.SupermarketProductHis1
             join br in (from cc in db.SupermarketProductHis1
                            group cc by cc.Province into gc
                            select new { Province = gc.Key, ReviseTime = gc.Max(cc => cc.ReviseTime) }
                         ) on new { hr.Province, hr.ReviseTime } equals new { br.Province, br.ReviseTime }
             select new { hr.ReviseTime, hr.Reviser, ProvinceCode = hr.Province }) on pv.Code equals pt.ProvinceCode into tpt
                                          from ttpt in tpt.DefaultIfEmpty()
select new { Province = pv.Code, ProvinceName = pv.Name, SkuSum = (ttpc == null ? 0 : ttpc.Pcount), SkuSumSetting = (ttps == null ? 0 : ttps.Pcount), ttpt.ReviseTime, ttpt.Reviser }
                                       );
queryCount = queryCount.Where(q => q.SkuSum > 0);
                        if (!string.IsNullOrWhiteSpace(pager.ProvinceCode))
                        {
               queryCount = queryCount.Where(q => q.Province == pager.ProvinceCode);
                        }
                        data.total = queryCount.Count();
                        data.data = queryCount.Select(s => new SupermarketProductSum { Province = s.Province, ProvinceName = s.ProvinceName, SkuSum = s.SkuSum, SkuSumSetting = s.SkuSumSetting, ReviseTime = s.ReviseTime, Reviser = s.Reviser }).OrderBy(s => s.ProvinceName).ToList();
Linq 综合写法的更多相关文章
- 复杂Linq语句写法
		
从网上收藏的复杂Linq语句写法 1.case when: 原型: sql原型: SELECT ProductID, Name, Color, CASE WHEN Color = 'Red' THEN ...
 - 第二节: 比较EF的Lambda查询和Linq查询写法的区别
		
简介 在前面EF的介绍中,曾多次提到过EF可以使用Lambda和Linq来完成对数据库的访问,这两种的语法的具体使用和注意事项在前面的DotNet进阶的系列章节中已经详细介绍过了,本次借着EF章节,重 ...
 - C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法
		
https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) ...
 - Linq表达式写法
		
Linq表达式,实现按照某个字段排序的简单写法. 做项目的时候遇到的一个简单问题,于是记下来. 列举一个例子: <T> model=new <T>(); 加入model中有要根 ...
 - SQL/LINQ/Lamda 写法[转发]
		
SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees .Sele ...
 - LinQ综合应用实例
		
直接上代码,内容很浅显易懂,在这里就不做更多的解释,解释见代码注释. using System; using System.Collections.Generic; using System.Linq ...
 - CSS3中很容易混淆的transform,translate,transition。如何去区分,以及综合写法。
		
属性 含义 transition(过渡) 用于设置元素的样式过度,和animation有着类似的效果,但细节上有很大的不同 transform(变形) 用于元素进行旋转.缩放.移动或倾斜,和设 ...
 - 【C#】MVC+EF+LINQ 综合小项目
		
第一,创建数据库 create table category(id int primary key,name nvarchar(20)) create table news(id int primar ...
 - sql里的in对应linq的写法 及 IQueryable转化为Dictionary
		
string[] arID = { "0001", "0002" }; var dict = this.service.GetMyList(m => ar ...
 
随机推荐
- Netty入门3之----Decoder和Encoder
			
 Netty强大的地方,是他能方便的实现自定义协议的网络传输.在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器.在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务 ...
 - Visio中锁定元件
			
若要进行形状保护,需要能看到“开发工具”选项卡.默认情况下,该选项卡是隐藏的. 查看“开发工具”选项卡 单击“文件”选项卡. 单击“选项”. 单击“高级”,然后向下滚动到“常规”部分. 选择“以开发人 ...
 - Python 爬虫 根据属性值关键字搜索标签
			
# <div class='\"name\"'>客如云</div> company_name = soup.find_all('div',class_=re ...
 - 【Leetcode】【Medium】Sqrt(x)
			
Implement int sqrt(int x). Compute and return the square root of x. 解题思路1,o(log(n)): 像这种从初始遍历查找匹配的任务 ...
 - 移动端fixed的元素抖动的问题
			
工作中发现,给一个元素添加fixed属性,让它固定在窗口某个位置,直接加fposition:fixed属性就能实现这个效果: 在安卓手机上的效果都比较好,但是ios系统的个别浏览器兼容性就不好,如QQ ...
 - July 01st 2017 Week 26th Saturday
			
Kind hearts are more than coronets. 善良的心灵胜于显贵的地位. Some people say that this is a dog-eat-dog world, ...
 - r.js压缩打包(require + backbone)项目开发文件
			
最近项目稳定了一点,之前一直没空关注的开发文件压缩打包问题也有时间来解决了 AMD模块化开发中的代码压缩打包工具——r.js 环境搭建基于nodejs:用于AMD模块化开发中的项目文件压缩打包,不是A ...
 - Debian/Kali 安装原生Firefox
			
出于种种原因,有很多人信仰原装纯净:就像debian下的iceweasel,有人总想换成firefox.好吧,正好最近29版发布了,我们无视掉这两者哥两好的关系,尝试在Debian/Kali 下安装F ...
 - oracle中的分区表
			
oracle中的分区表在系统中使用的频率不小,在一些数据量大的系统中更是频繁出现. 提到分区表,首先就要理解下什么是分区.其实所谓的分区简单来说就是分区域,分区表就是将一张表分区域存放. 那么分区域中 ...
 - 使用Android Studio和Gradle编译NDK项目之Experimental Plugin User Guide
			
转载自:http://tools.android.com/tech-docs/new-build-system/gradle-experimental Introduction The new exp ...