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,可能读者朋友们觉得不够直观,没关系,我们稍作修改如下:
OK!这里我们把tbl_type表也添加进来,并把group的Key值设为type.Name,这样我们取出的type就是真实的类型名称了。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) };
5.总结
从上面几个例子可以看出,LINQ语句将SQL的部分语法整合进C#语句中,使得程序在检索数据方面显得相当灵活,增强了编程语言在数据检索方面的能力,使我们能够更加专注于数据逻辑的设计而非实现。上面的介绍只是对LINQ应用的一个简单介绍,更多的内容还等着朋友们自己去发掘哦:)
public IQueryable<Tbl_book> GetSpecialBooks()