技术开发 频道

整合Java 6脚本、Groovy实现动态 MVC模式(二)


4.排行榜、特价书等逻辑的实现

首先看排行榜的实现: 

public static IQueryable<Tbl_book> GetClicksTopBooks(int topNum)
        {
            Books books = new Books(ConnectionString);
            var topBooks =
                (from book in books.Tbl_books
                orderby book.Clicks descending
                select book).Take(10);
            return topBooks;
    }

这里使用了LINQ的Take语句,首先按价格从高到低排列,然后取出排在前面的10个数据。下面我们看一下特价书的实现:

public IQueryable<Tbl_book> GetSpecialBooks()
        {
            Books books = new Books(ConnectionString);
            Books booksSpecial =
                from book in books.Tbl_books
                where (book.Isspecial == true)
                select book;
            return booksSpecial;
     }

下面再介绍一个例子,使大家对LINQ有更深一层的理解。

例如:我们现在需要统计出各个类别的图书分别有多少本,以及各类图书的点击总量

var groupBooksNumAndClicks =
from book in books.Tbl_books
group book by book.Type_id into g
select new { type = g.Key, booksSum = g.Count(), clicksSum = g.Sum(p => p.Clicks) };

这里使用了Group by语句和扩展方法Sum轻松的实现了这一逻辑,这里的匿名类型中type显示的是type id,可能读者朋友们觉得不够直观,没关系,我们稍作修改如下:

var groupBooksNumAndClicks =
from book in books.Tbl_books
from type in books.Tbl_types
where book.Type_id == type.Id
group book by type.Name into g
select new { type = g.Key, booksSum = g.Count(), clicksSum = g.Sum(p => p.Clicks) };
OK!这里我们把tbl_type表也添加进来,并把group的Key值设为type.Name,这样我们取出的type就是真实的类型名称了。

5.总结
从上面几个例子可以看出,LINQ语句将SQL的部分语法整合进C#语句中,使得程序在检索数据方面显得相当灵活,增强了编程语言在数据检索方面的能力,使我们能够更加专注于数据逻辑的设计而非实现。上面的介绍只是对LINQ应用的一个简单介绍,更多的内容还等着朋友们自己去发掘哦:)
0
相关文章