如何使用LINQ创建摘要报告

时间:2011-11-29 04:44:11

标签: c# linq

我有一个包含主键和行键列的表。数据如下所示。数据已加载到作为集合的表中。

Primary Key    Row Key
01000100001  000001 - Subject ID=1, Book ID=1, Chapter ID=1 and Page ID=1
01000100001  000002 - Subject ID=1, Book ID=1, Chapter ID=1 and Page ID=2
01000100001  000003 - Subject ID=1, Book ID=1, Chapter ID=1 and Page ID=3
01000100002  000004 - Subject ID=1, Book ID=1, Chapter ID=2 and Page ID=4
01000100002  000005 - Subject ID=1, Book ID=1, Chapter ID=2 and Page ID=5
01000100002  000006 - Subject ID=1, Book ID=1, Chapter ID=2 and Page ID=6
01000200003  000007 - Subject ID=1, Book ID=2, Chapter ID=3 and Page ID=7
01000200003  000008 - Subject ID=1, Book ID=2, Chapter ID=3 and Page ID=8
02000300004  000009 - Subject ID=2, Book ID=3, Chapter ID=4 and Page ID=9
02000300005  000010 - Subject ID=2, Book ID=3, Chapter ID=5 and Page ID=10

集合类名为Pages,包含一个名为PrimaryKey的列,该列由以下内容组成:

2 column Subject ID
4 column Book ID
4 column Chapter ID

我需要创建一个类似于以下内容的报告,我很想知道 是否以及如何使用LINQ为此创建查询。

Subject  Books  Chapters      Pages

01         2         3           8
02         1         2           2

对我如何做到这一点的任何建议都将非常感激。

2 个答案:

答案 0 :(得分:2)

您可以使用group by和sum功能,linq查询看起来像这样:

from page in pages
group page by new { 
                    page.subjectId
                    , page.bookId
                    , page.chapterId 
                 } into group
select new {
             group.key.SubjectId
             , group.key.bookId
             , group.Key.chapterId
             , total = pages.sum(s => s.Page)
}

很抱歉,我现在没有可用的视觉工作室,但这应该会给你一个很好的开始。

答案 1 :(得分:0)

如果报告变得越来越复杂,只需在SQL Server中创建一个视图并使用LINQ读取视图 - 它就容易多了!

相关问题