您的位置:知识库 » 数据库

走进Linq-Linq to Objects(下)实例篇

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 18:39  阅读: 14759 次  推荐: 3   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


分组

在上一篇中GroupBy对应的查询表达式也非常麻烦,下面就来瞧瞧。我们要对博客园上所有文章做个分组,分组依据就根据博客的用户名好了:

var dataSource = from post in posts
          group post.Title by post.UserName;

可我们要是想根据博客的用户名和博客的分类进行分组怎么办?

var dataSource = from post in posts
           group post.Title by post.UserName,post.CategoryId;

这样是行不通的,编译都不通过,像下面这样就可以了:

var dataSource = from post in posts
             group post.Title by 
new { post.UserName, post.CategoryId };

用一个匿名类型进行group(当然,你使用一个具名类型也是可以的);

{

//在遍历这个dataSource的时候,item有一个属性Key,这个Key就代表by后面的东西

}

如果像上面那样,这个查询表达式就要到这里终止了,还有这样一种方式:

var dataSource = from post in posts
                         group post by post.UserName into grouping
                         select 
new { 
                            Key 
= grouping.Key,
                            Value 
= grouping
                         };

nto子句又引入了一个变量,这个变量可以在后面的select子句里使用,在select子句里我们可以访问grouping的Key,并可以对grouping进行一些统计,比如Sum啊:

var dataSource = from post in posts
                         group post by post.UserName into grouping
                         select 
new { 
                            Key 
= grouping.Key,
                            TotalClick 
= grouping.Sum(post=>post.Click)
                         };

这个TotalClick就可以统计出每个博客的所有点击数了。

3
0
标签:linq objects

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻