zoukankan      html  css  js  c++  java
  • [LINQ] group by 与连接查询

    //副表 树种-品名-折材率 汇总
    var listNeed = (from t in dtNeed.AsEnumerable()
                    group t by new { t1 = t.Field<string>("SZ"), t2 = t.Field<string>("PM") } into m
                    select new
                    {
                        SZ = m.Key.t1,
                        PM = m.Key.t2,
                        Need = m.Sum(n => n.Field<decimal>("Need"))
                    }).ToList();
    //台账 树种-品名-结余量 汇总
    var listSY = (from t in dtStorage.AsEnumerable()
                    group t by new { t1 = t.Field<string>("SZNo").Substring(0,4), t2 = t.Field<string>("CZId") } into m
                    select new
                    {
                        SZ = m.Key.t1,
                        PM = m.Key.t2,
                        SY = m.Sum(n => n.Field<decimal>("SY"))
                    }).ToList();
    //所需结余对比 树种-品名-副表所需-台账结余
    var listAll = (from dn in listNeed
                    join ds in listSY
                        on new { dn.SZ, dn.PM } equals new { ds.SZ, ds.PM }
                        into joined
                        from temp in joined.DefaultIfEmpty()
                    select new
                    {
                        SZ = dn.SZ,
                        PM = dn.PM,
                        Need = dn.Need,
                        SY = temp == null ? 0 : temp.SY
                    }).ToList();

    结果:

    http://blog.sina.com.cn/s/blog_46e9573c01014fx2.html

    1
    、左连接: var LeftJoin = from emp in ListOfEmployees join dept in ListOfDepartment on emp.DeptID equals dept.ID into JoinedEmpDept from dept in JoinedEmpDept.DefaultIfEmpty() select new { EmployeeName = emp.Name, DepartmentName = dept != null ? dept.Name : null }; 2、右连接: var RightJoin = from dept in ListOfDepartment join employee in ListOfEmployees on dept.ID equals employee.DeptID into joinDeptEmp from employee in joinDeptEmp.DefaultIfEmpty() select new { EmployeeName = employee != null ? employee.Name : null, DepartmentName = dept.Name }; 3、内连接: var query = from t in entitiy.TB_GCGL_ADA_USER join p in entitiy.TB_GCGL_ZY_ZYK on t.ETPRS_CODE equals p.ETPRS_CODE select new TB_USER_ZYK { USER_ID = t.USER_ID, USER_NAME = t.USER_NAME, USER_PASSWORD = t.USER_PASSWORD, };
  • 相关阅读:
    带你梳理Roach全量恢复的整体流程
    为AR&VR黑科技:以“自由视角”360度尽展舞台唯美
    一个15年的架构师谈“如何成为一名优秀的解决方案架构师”
    SARIF:DevSecOps工具与平台交互的桥梁
    “蚂蚁牙黑”太火,想玩就用ModelArts做一个!
    图神经网络,这到底是个什么?
    Python 面向对象进阶
    Python 装饰器
    SQL 存储过程中事务回滚
    python 迭代器协议和生成器
  • 原文地址:https://www.cnblogs.com/wangx036/p/5147466.html
Copyright © 2011-2022 走看看