• Linq实现主类和子类下信息条数查询


    需求:

    数据库中存在两个表,一个表存信息类别,另一个存放信息

    信息类别表按级别(level)分主类(0)和子类(1),信息从属子类下(子类主键),

    Linq语句实现主类下信息条数和子类下信息条数查询

     

    思路:

    信息属于子类,可以先用分组查询子类下信息的条数,再求和查询主类下子类条数的和。

     

    实现:

    先取得信息类别(Linq查询表,_RMSContainer代表ADO.NET实体数据模型):

    var InfoClassList = from A in _RMSContainer.Info_Class

                  select new

                  {

                   A.PK,

                   A.Name,

                   A.Class_Level,

                   A.Parent_PK

                  };

    计算信息子类的条数(用Linq分组查询):

    var ChildCountList = from A in _RMSContainer.Info

                    group A by A.PK into G

                    select new

                    {

                     G.Key,

                     InfoCount = G.Count()

                    };

    生成信息子类数据(用Join on语句):

    var ChildList = from B in InfoClassList

               where B.Class_Level == 1

               join D in ChildCountList

               on B.PK equals D.Key

               select new

               {

                B.PK,

                    B.Name,

                    B.Class_Level,

                    B.Parent_PK,

                    D.InfoCount

               };

    计算信息主类的条数(LinqSum求和):

    var ParentCountList = from E in ChildList

                    where E.Class_Level == 1

                    group E by E.PK into F

                    select new

                    {

                     F.Key,

                     InfoCount = F.Sum(E => E.InfoCount)

                    };

    //生成主类的数据(用Join on语句):

    var ParentList = from L in InfoClassList

               where L.Class_Level == 0

               join M in ParentCountList

               on L.PK equals M.Key

               select new

               {

                L.PK,

                    L.Name,

                    L.Class_Level,

                    L.Parent_PK,

                    M.InfoCount

               };

    合并主类子类集合(LinqUnion):

    var ReturnList = ParentList.Union(ChildList);

    得到的ReturnList 即我们想要的信息统计的集合

     

    知识点:Linq查询表,Linq分组查询,LinqJoin on用法,Linq求和,Linq合并集合

     

    作者:彭海松

    出处:http://www.cnblogs.com/haisongvip/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     

  • 相关阅读:
    linux环境下安装redis扩展
    LINUX环境下SVN安装与配置(利用钩子同步开发环境与测试环境)
    Linux环境下网卡配置
    MAC 下虚拟主机的配置
    从json_encode过来的的字符串被返回到html页面时的解析
    for循环绑定事件,闭包思想!
    js8月-4号,,思想
    三种添加事件的方式
    smarty第一天
    5秒钟后自动跳转!!!!
  • 原文地址:https://www.cnblogs.com/haisongvip/p/2295101.html
Copyright © 2020-2023  润新知