新手asp.net(c#)网页编程会用到的基本LINQ语法框架
2013-10-09 17:57
736 查看
-----————————————————————————————————————————————————————————————
1、where的用法
下面我们使用Linq实现一个对数组的查找功能,代码如下:
示例1
var result = from n in names where n.StartsWith("s") select n
解释:1、 用n遍历数组names中的元素,“当(where)”n以s开头时,选择它存入 result这个变量;
2、用var关键字声明结果变量;var声明的变量不用指定类型,编译器会自动根据结果推断出该类型。这种声明方式只适用于局部变量。
3、类似StartWith()的方法还有Length()(长度)、Contains()(包含)。
__________________________________________________________________________________________________________________________________________
2、在上面的基础上 我们在引入order by(按一定的排序查询) 的用法:
示例2
Orderby子句默认为升序,但可以添加descending关键字,指定降序排列。如:
Orderby n descending select n;
另外,可以按照任意表达式进行排序,而无需重新编写查询。例如,要按照姓名中的最后一个字母顺序排序,只需添加如下子句:
Orderby n.Substring(n.Length-1);
————————————————————————————————————————————————————————————————
3、
合计运算符
使用合计运算符会强制立即执行,而不是延迟执行
示例3
示例说明:
Sum()注意,在此给Sum()方法传入了一个λ表达式n=>(long)n,以获得所有数字的和。 n=>(long) n表示将n强制转化成长整型,这个值赋值给n本身。
————————————————————————————————————————————————————————————————
4、
1.6 投射:在查询中创建新对象
投射是在Linq查询中从其它数据类型中创建新数据类型的技术术语。Select关键字是投射运算符。
如Sql数据查询语言,select用来从数据表中选择适当的字段,在Linq中select与其类似。例如将示例4中的代码改为如下:
其运行结果为:
Zhangsan
Lisi
甚至可以通过给select添加表达式,来转换查询中的数据。如:
select n+1;
select stu.Name.ToUpper();
但是与sql不同,Linq不允许在select子句中有多个字段,即select stu.Name,stu.Age这样的形式将产生一个错误。
如果要实现上述情况,需要在select子句中创建一个新对象,来保存查询的结果。
————————————————————————————————————————————————————————————
5、group by
在Linq中还可以实现像Sql中的Group by语句一样的分组统计功能。
var result=from stu in list group stu by stu.Class into student select new {Class=student.Key,Count=student.Count()};
var orderresult=from student in result orderby student.Count descending select student;
其运行结果为
在组合查询中的数据通过一个键(key)字段来分组,每个组中的所有程序都共享这个字段值,在此例中键字段是Class:
group stu by stu.Class
要计算每个组的数量,应该生成一个新的结果集student:
group stu by stu.Class into student
var result=from stu in list group stu by stu.Class into student select new {Class=student.Key,Count=student.Count()};
var orderresult=from student in result orderby student.Count descending select student;
——————————————————————————————————————————————————————————————————————
6、多级排序
1.8 多级排序
处理了带多个属性的对象后,要考虑按多种方式进行排序的问题了,例如我们先按照班级排序,在按照年龄排序。代码如下:
var result=from stu in list orderby stu.Class,stu.Age select stu;
结果如下:
还可以给字段添加Descending关键字。如
orderby stu.Class,stu.Age.deseending;
——————————————————————————————————————————————————————————————————————
-----————————————————————————————————————————————————————————————
1、where的用法
下面我们使用Linq实现一个对数组的查找功能,代码如下:
示例1
class Program { static void Main(string[] args) { string[] names = { "alonso", "zheng", "smith", "jones", "smythe", "small", "Ruiz", "Hsieh", "Jorgenson", "Ilyich", "singh" }; var result = from n in names where n.StartsWith("s") select n; Console.WriteLine("以s开头的名字为:"); foreach (var item in result) { Console.WriteLine(item); } } } |
解释:1、 用n遍历数组names中的元素,“当(where)”n以s开头时,选择它存入 result这个变量;
2、用var关键字声明结果变量;var声明的变量不用指定类型,编译器会自动根据结果推断出该类型。这种声明方式只适用于局部变量。
3、类似StartWith()的方法还有Length()(长度)、Contains()(包含)。
__________________________________________________________________________________________________________________________________________
2、在上面的基础上 我们在引入order by(按一定的排序查询) 的用法:
示例2
static void Main(string[] args) { string[] names = { "alonso", "zheng", "smith", "jones", "smythe", "small", "Ruiz", "Hsieh", "Jorgenson", "Ilyich", "singh" }; var result = from n in names where n.StartsWith("s") orderby n select n; Console.WriteLine("以s开头的名字为:"); foreach (var item in result) { Console.WriteLine(item); } } |
Orderby子句默认为升序,但可以添加descending关键字,指定降序排列。如:
Orderby n descending select n;
另外,可以按照任意表达式进行排序,而无需重新编写查询。例如,要按照姓名中的最后一个字母顺序排序,只需添加如下子句:
Orderby n.Substring(n.Length-1);
————————————————————————————————————————————————————————————————
3、
合计运算符
运算符 | 说明 |
Count() | 结果的个数 |
Min() | 结果中的最小值 |
Max() | 结果中的最大值 |
Average() | 数字结果的平均值 |
Sum() | 所有数字结果的和 |
示例3
class Program { static void Main(string[] args) { int[] numbers = CreateNumbers(123456); var result = from n in numbers where n > 1000 select n; Console.WriteLine("大于1000的个数为:" + result.Count()); Console.WriteLine("大于1000的最大数为:" + result.Max()); Console.WriteLine("大于1000的最小数为:" + result.Min()); Console.WriteLine("大于1000的平均数为:" + result.Average()); Console.WriteLine("大于1000的数的和为:" + result.Sum(n=>(long)n)); } private static int[] CreateNumbers(int count) { Random rand = new Random(0); int[] result = new int[count]; for (int i = 0; i < count; i++) { result[i] = rand.Next(); } return result; } } |
示例说明:
Sum()注意,在此给Sum()方法传入了一个λ表达式n=>(long)n,以获得所有数字的和。 n=>(long) n表示将n强制转化成长整型,这个值赋值给n本身。
————————————————————————————————————————————————————————————————
4、
1.6 投射:在查询中创建新对象
投射是在Linq查询中从其它数据类型中创建新数据类型的技术术语。Select关键字是投射运算符。
如Sql数据查询语言,select用来从数据表中选择适当的字段,在Linq中select与其类似。例如将示例4中的代码改为如下:
var result=from stu in list where stu.Age=18 select stu.Name; |
Zhangsan
Lisi
甚至可以通过给select添加表达式,来转换查询中的数据。如:
select n+1;
select stu.Name.ToUpper();
但是与sql不同,Linq不允许在select子句中有多个字段,即select stu.Name,stu.Age这样的形式将产生一个错误。
如果要实现上述情况,需要在select子句中创建一个新对象,来保存查询的结果。
————————————————————————————————————————————————————————————
5、group by
在Linq中还可以实现像Sql中的Group by语句一样的分组统计功能。
var result=from stu in list group stu by stu.Class into student select new {Class=student.Key,Count=student.Count()};
var orderresult=from student in result orderby student.Count descending select student;
其运行结果为
在组合查询中的数据通过一个键(key)字段来分组,每个组中的所有程序都共享这个字段值,在此例中键字段是Class:
group stu by stu.Class
要计算每个组的数量,应该生成一个新的结果集student:
group stu by stu.Class into student
var result=from stu in list group stu by stu.Class into student select new {Class=student.Key,Count=student.Count()};
var orderresult=from student in result orderby student.Count descending select student;
——————————————————————————————————————————————————————————————————————
6、多级排序
1.8 多级排序
处理了带多个属性的对象后,要考虑按多种方式进行排序的问题了,例如我们先按照班级排序,在按照年龄排序。代码如下:
var result=from stu in list orderby stu.Class,stu.Age select stu;
结果如下:
还可以给字段添加Descending关键字。如
orderby stu.Class,stu.Age.deseending;
——————————————————————————————————————————————————————————————————————
相关文章推荐
- ASP.NET介绍及C#基本语法(一)
- 第一章 ASP.net C#基本语法(A篇 变量)
- ASP.net C#基本语法(B篇 程序结构、运算符、运算优先级)
- ASP.NET 3.5核心编程学习笔记(21):LINQ查询语法
- ASP.NET介绍及C#基本语法(三)
- 第一章 ASP.net C#基本语法(A篇 变量)
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 第一章 ASP.net C#基本语法(B篇 程序结构、运算符、运算优先级)
- 使用ASP.NET AJAX 1.0框架PreviewGlitz进行网页动画编程
- ASP.NET介绍及C#基本语法(二)
- ASP.NET介绍及C#基本语法--案例实战
- 第一章 ASP.net C#基本语法(A篇 变量)
- 第一章 ASP.net C#基本语法(B篇 程序结构、运算符、运算优先级)
- 第一章 ASP.net C#基本语法(B篇 程序结构、运算符、运算优先级)
- asp.net MVC + linq to Entity linq to Entity的基本操作
- C#语法糖之Cookies操作类 asp.net
- ASP.NET网络编程中经常用到的函数集
- asp.net(c#)网页跳转七种方法小结
- C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)