LINQ简明教程:数据排序、分组、过滤
LINQ可以对很多数据源进行查询操作,比如数据库、数组(array)、链表(list)、XML文件等。在本文中,我将从数组中提取数据,这些数据是10个最受欢迎的国家。有一个类叫Countries,有country, population and continent这些属性。我们将以Countries类为元素的数组作为数据源,绑定到GridView进行显示,并且利用LINQ对数据进行排序、分组和过滤。
下面是一些效果图:




代码
下面就是Countries类:
public class Countries
{
public string Country
{
get;
set;
}
public long Population
{
get;
set;
}
public string Continent
{
get;
set;
}
}
下面的Page_Load函数将对 Countries类数组进行初始化:
protected void Page_Load(object sender, EventArgs e)
{
for (int ctr = 0; ctr < cc.Length;ctr++ )
{
cc[ctr] = new Countries();
}
cc[0].Country = "Bangladesh";
cc[0].Population = 156594962;
cc[0].Continent = "Asia";
cc[1].Country = "Brazil";
cc[1].Population = 200361925;
cc[1].Continent = "America";
cc[2].Country = "China";
cc[2].Population = 1357380000;
cc[2].Continent = "Asia";
cc[3].Country = "India";
cc[3].Population = 1252139596;
cc[3].Continent = "Asia";
cc[4].Country = "Indonesia";
cc[4].Population = 249865631;
cc[4].Continent = "Asia";
cc[5].Country = "Japan";
cc[5].Population = 127338621;
cc[5].Continent = "Asia";
cc[6].Country = "Nigeria";
cc[6].Population = 173615345;
cc[6].Continent = "Africa";
cc[7].Country = "Pakistan";
cc[7].Population = 182142594;
cc[7].Continent = "Asia";
cc[8].Country = "Russian Federation";
cc[8].Population = 143499861;
cc[8].Continent = "Europe";
cc[9].Country = "United States";
cc[9].Population = 316128839;
cc[9].Continent = "America";
btnDisplay_Click(sender, e);
}
点击展示按钮后,即可将数据绑定到GridView:
protected void btnDisplay_Click(object sender, EventArgs e)
{
Label2.Text = "Alphabetical List";
var info = from i in cc select i;
GridView1.DataSource = info;
GridView1.DataBind();
}
下面的代码是利用LINQ对数据进行排序:
protected void btnAsc_Click(object sender, EventArgs e)
{
Label2.Text = "In Ascending Order of Population";
var info = from i in cc orderby i.Population select i;
GridView1.DataSource = info;
GridView1.DataBind();
}
protected void btnDesc_Click(object sender, EventArgs e)
{
Label2.Text = "In Descending Order of Population";
var info = from i in cc orderby i.Population descending select i;
GridView1.DataSource = info;
GridView1.DataBind();
}
正如你上面所看到的,orderby 可以指定按population属性正向排序还是反向排序。
下面的代码我们将利用LINQ实现按country分组的功能,并且列出国家的数量、总人口数以及平均人口数:
protected void btnGroup_Click(object sender, EventArgs e)
{
Label2.Text = "Continent Wise Group Data";
var info = from i in cc
orderby i.Continent
group i by i.Continent into g
select new
{
Continent = g.Key,
NumberOfCountries = g.Count(),
TotalPopulation = g.Sum(s => s.Population),
AveragePopulation = g.Average(a => a.Population)
};
GridView1.DataSource = info;
GridView1.DataBind();
}
groupby 操作可以实现不同的分组效果,我们可以根据 Count(), Sum(), Average()等方式来分组。
下面的代码将利用LINQ对数据进行过滤:
protected void btnShow_Click(object sender, EventArgs e)
{
Label2.Text = "Data Filtered by Country Name";
var info = from i in cc where i.Country.ToUpper() == txtCountry.Text.Trim().ToUpper() select i;
GridView1.DataSource = info;
GridView1.DataBind();
}
where 操作可以指定数据过滤的条件,比如你可以根据国家名称来过滤。
LINQ简明教程:数据排序、分组、过滤的更多相关文章
- SQL语句检索数据排序及过滤
阅读目录 一:排序检索数据 二:过滤数据 三:高级数据过滤 四:用通配符进行过滤 回到顶部 一:排序检索数据 1.1 排序数据 比如查询数据库中表数据的时候,我们使用如下语句: select * fr ...
- Linq 简明教程
一个简单的实例 static void Main(string[] args) { string[] names = { "Alonso", "Zheng", ...
- 《mysql必知必会》笔记1(检索、排序、过滤、计算、汇聚、分组)
一:了解SQL 1:列是表中的字段,所有表都由一个或多个列组成的.行是表中的记录,表中的数据都按行存储. 2:表中每一行都应该有可以唯一标识自己的一列或一组列.主键(一列或一组列),其值能够唯一区分每 ...
- SQL从入门到基础 - 04 SQLServer基础2(数据删除、数据检索、数据汇总、数据排序、通配符过滤、空值处理、多值匹配)
一.数据删除 1. 删除表中全部数据:Delete from T_Person. 2. Delete 只是删除数据,表还在,和Drop Table(数据和表全部删除)不同. 3. Delete 也可以 ...
- 手把手教你如何用java8新特性将List中按指定属性排序,过滤重复数据
在java中常常会遇到这样一个问题,在实际应用中,总会碰到对List排序并过滤重复的问题,如果List中放的只是简单的String类型过滤so easy,但是实际应用中并不会这么easy,往往List ...
- .NET LINQ 数据排序
数据排序 排序操作按一个或多个特性对序列的元素进行排序. 第一个排序条件对元素执行主要排序. 通过指定第二个排序条件,可以对各个主要排序组中的元素进行排序. 方法 方法名 说明 C# 查 ...
- Java8简明教程(转载)
ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. “Java并没 ...
- Contoso 大学 - 3 - 排序、过滤及分页
原文 Contoso 大学 - 3 - 排序.过滤及分页 目录 Contoso 大学 - 使用 EF Code First 创建 MVC 应用 原文地址:http://www.asp.net/mvc/ ...
- LINQ入门教程之各种标准查询操作符(一)
好久之前就想系统的学习下LINQ,好久之前…… 本篇文章主要介绍LINQ等的标准查询操作符,内容取自<LINQ高级编程>,后续还会介绍LINQ to XML ,LINQ to SQL. L ...
随机推荐
- yii 标签用法(模板)
yii模板中的label标签 <?php echo $form->labelEx($model,'name'); ?> 编译后: <label for="Projec ...
- django 内建标签和过滤器参考
下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block ...
- getsockname和getpeername函数
这2个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址(getpeername) int getsockname(int sockfd, s ...
- iTunes 安装终极解决方案
近日手贱升级了Itunes,升级过程即报失败,然后卸载所有相关东西,再重装,Itunes安装成功,但是报告无法使用iphone,经过几天摸索,发现是Apple Mobile Device Suppor ...
- python——os模块操作文件
- JS学习之页面加载
1.window.opener.location.reload(); 意思是让打开的父窗口刷新.window.opener指的是本窗口的父窗口,window.opener.location.h ...
- Installshield更新时,新加dll未拷贝至安装目录问题完美解决【原创】
最近在发现在开发过程中新增的目录或文件(特别是dll\ocx\exe等二进制文件),在升级安装时拷贝失败. 经过一周的研究,完美解决办法: 对于新增的文件或目录,放到一个新的component中,并且 ...
- 用C#实现网络爬虫(一)
网络爬虫在信息检索与处理中有很大的作用,是收集网络信息的重要工具. 接下来就介绍一下爬虫的简单实现. 爬虫的工作流程如下 爬虫自指定的URL地址开始下载网络资源,直到该地址和所有子地址的指定资源都下载 ...
- COJ 0016 20603矩阵链乘
传送门:http://oj.cnuschool.org.cn/oj/home/solution.htm?solutionID=35454 20603矩阵链乘 难度级别:B: 运行时间限制:1000ms ...
- sql优化(oracle)
系统优化中很重要的方面是SQL语句的优化,对于海量数据,优质的SQL能够有效的提高系统的可用性. 总结的有点罗嗦,列个简单的目录啦~ 目录 第一部分知识准备 ...