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/

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

 

posted @ 2011-12-20 20:08  彭海松  阅读(1634)  评论(1编辑  收藏  举报