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 综合写法的更多相关文章

  1. 复杂Linq语句写法

    从网上收藏的复杂Linq语句写法 1.case when: 原型: sql原型: SELECT ProductID, Name, Color, CASE WHEN Color = 'Red' THEN ...

  2. 第二节: 比较EF的Lambda查询和Linq查询写法的区别

    简介 在前面EF的介绍中,曾多次提到过EF可以使用Lambda和Linq来完成对数据库的访问,这两种的语法的具体使用和注意事项在前面的DotNet进阶的系列章节中已经详细介绍过了,本次借着EF章节,重 ...

  3. C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法

    https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) ...

  4. Linq表达式写法

    Linq表达式,实现按照某个字段排序的简单写法. 做项目的时候遇到的一个简单问题,于是记下来. 列举一个例子: <T> model=new <T>(); 加入model中有要根 ...

  5. SQL/LINQ/Lamda 写法[转发]

    SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees   .Sele ...

  6. LinQ综合应用实例

    直接上代码,内容很浅显易懂,在这里就不做更多的解释,解释见代码注释. using System; using System.Collections.Generic; using System.Linq ...

  7. CSS3中很容易混淆的transform,translate,transition。如何去区分,以及综合写法。

    属性 含义     transition(过渡) 用于设置元素的样式过度,和animation有着类似的效果,但细节上有很大的不同 transform(变形) 用于元素进行旋转.缩放.移动或倾斜,和设 ...

  8. 【C#】MVC+EF+LINQ 综合小项目

    第一,创建数据库 create table category(id int primary key,name nvarchar(20)) create table news(id int primar ...

  9. sql里的in对应linq的写法 及 IQueryable转化为Dictionary

    string[] arID = { "0001", "0002" }; var dict = this.service.GetMyList(m => ar ...

随机推荐

  1. MXNet 分布式环境部署

    MXNet 分布式环境部署 1. MxNet 分布式介绍 先忽略吧, 回头在填上去 2. 分布式部署方法 假设有两台主机ip地址分别是xxx.xxx.xxx.114 和 xxx.xxx.xxx.111 ...

  2. 实验三:klee的执行重现机制(示例分析)

    结论性内容: (1)如果是在程序中使用klee_make_symbolic,则可以使用下列脚本进行重现. export LD_LIBRARY_PATH=/home/klee/xiaojiework/k ...

  3. ArrayList 与 List 关系与代码示例 - Java

    关系 List 是 Java Interface, ArrayList 是 Java Class,它们都属于 java.util 包. Java List 是有序的集合(ordered collect ...

  4. MySQL半同步复制的搭建和配置原理

    半同步复制: 什么是半同步复制?我们知道在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的.异步复制可以提供最佳的性能,因为主服务器在将更新的数据写入它的二进制日志(Binl ...

  5. win+ R下的常见命令

    -------------------------电脑运行常见命令----------------------------- Windows+R输入cmd 运行net start mssqlserve ...

  6. Spring-aop实现切面的四种方式(1)

    Spring实现AOP的4种方式 先了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作.2.连接点(Joinpoint):程 ...

  7. CentOS下go 安装

     go 语言源码安装依赖 ,gcc ,make glibc库,等,上述工具安装省略,另外,其源代码更新采用的是mercurial 工具,安装前先安装mercureal :   1.mercurial安 ...

  8. UVa 10375 - Choose and divide(唯一分解定理)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. [转] 从此不再惧怕URI编码:JavaScript及C# URI编码详解

    混乱的URI编码 JavaScript中编码有三种方法:escape.encodeURI.encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode.Serv ...

  10. ThinkPHP3.2.3快速入门:基础篇

    一.安装 thinkphp无需安装,只需将从官网上下载的压缩包解压后,把所有文件放到localhost根目录里就行了 二.压缩包中文件简述 :应用程序文件夹.自己所写的文件都放在这个文件夹里面 :公用 ...