[.NET 3.x新特性四]LinQ查询语法

简介:
每天记录一下C#3.0的一些特性,本文主要要介绍的是LinQ的一些类查询的用法。在前面几篇文章中我们了解到了C#3.0中的一些新特性,而我觉得在C#3.0中改变最大或着说变化最大的就要属LinQ了。今天我们通过一些例子来讲解一下他的一些用法,因为我也是在摸索阶段真正项目中还没有涉及到这中用法。

    LinQ查询的实现方法在前几篇文章中也有提到过,那就是LinQ是通过方法扩展和Lambda表达式来实现的。下面我们来举个例子,在上几篇文章中我们知道有一个自动属性,我们定义了一个类,代码如下:

1       public   class  Person 
2      {
3           public   string  Name {  get set ; }
4           public   string  NickName {  get set ; }
5           public   int  Age {  get set ; }
6      }

     我们还实例化了一个列表List<Person>,并通过Where扩展方法对其进行过滤,代码如下:

1  List < Person >  people  =   new  List < Person >
2                                    {
3                                         new  Person{Name = " 小兵 " ,NickName = " 网魂小兵 " ,Age = 23 },
4                                         new  Person{Name = " 青青 " ,NickName = " QQing " ,Age = 22 }
5                                    };
6               // 取得people中Age为23的Person实例。
7              IEnumerable < Person >  results  =  people.Where(p  =>  p.Age  ==   23 );
8               // 计算people中的平均岁数。
9               int  perAge  =  people.Average(p  =>  p.Age);

     接下来我们可以通过类SQL查询的方法来取得我们所要的相应集合,我把它叫做类SQL查询是因为我感觉他有点像SQL的语句,在今后的一系列的文章中我们将慢慢的对其(LinQ)进行分析,我们对上面的代码修改如下:

 1  List < Person >  people  =   new  List < Person >
 2                                    {
 3                                         new  Person{Name = " 小兵 " ,NickName = " 网魂小兵 " ,Age = 23 },
 4                                         new  Person{Name = " 青青 " ,NickName = " QQing " ,Age = 22 }
 5                                    };
 6               // 在SQL中:SELECT p.* FROM people p WHERE p.Age = 22
 7              IEnumerable < Person >  results  =  from p  in  people
 8                                            where p.Age  ==   22
 9                                            select p;
10               // 在SQL中:SELECT p1.* FROM people p1 WHERE p1.NickName ORDER BY  DESC
11              IEnumerable < Person >  results1  =  from p1  in  people
12                                             where p1.NickName.StartsWith( " Q " )
13                                             orderby p1.Name descending
14                                             select p1;

     通过上面的注释就知道我为什么喜欢叫他类SQL查询了吧,为了能够在VS智能提示中更好的发挥微软把select移到语句的末尾,而且我们还能够对所得到的结果进行排序。如果用这个对数据库进行查询,他将自动生成标准的SQL语句,然后在对数据库进行查询,为了对性能的考虑它是一种滞后运行(不知道怎么说,就是等待运行的时候才生成SQL字符串)。上面我们是返回了整个Person实例,我们也可以只返回实例中的某一个字段:

1  IEnumerable < string >  results  =  from p  in  people
2                                             where p.NickName.StartsWith( " Q " )
3                                             orderby p.Name descending
4                                             select p.Name;

     是不是很爽呢?在感觉中还是有一点不够完美,如:IEnumerable<T>这个东东我们平时是不是很少用,看他就有点不爽,说不定有写人还不认识她呢?那我们能不能用一个比较好看的来表示呢?请看下面的代码:

1  List < string >  results  =  (from p  in  people
2                                     where p.NickName.StartsWith( " Q " )
3                                     orderby p.Name descending
4                                     select p.Name).ToList();

    List<T>这个应该很经常见到吧,在.NET2.0中泛型编程中为了类型安全微软都推荐我们用这个,而不用ArrayList,其实这么简单都要归功于方法的扩展。我们不仅可以把他转换为List<T>还可以把它转换为数组等等,如果有Key,Value查询的我们还可以把它转换为字典Dictionary<Tkey,TValue>等等。对于LinQ对数据库的查询对XML格式字符串或文件的解析等我们以后在慢慢的道来。

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2007/09/07/dotnet_3x_query_syntax.html,如需转载请自行联系原作者

相关文章
|
2月前
|
开发框架 .NET API
.NET 10首个预览版发布:重大改进与新特性概览!
.NET 10首个预览版发布:重大改进与新特性概览!
.NET 10首个预览版发布:重大改进与新特性概览!
|
3月前
|
人工智能 机器人
D1net阅闻 | 谷歌DeepMind研究发现LLM新特性
D1net阅闻 | 谷歌DeepMind研究发现LLM新特性
|
9月前
|
人工智能 开发框架 .NET
.NET技术的强大功能:.NET技术的基础特性、在现代开发中的应用、以及它如何助力未来的软件开发。
.NET技术是软件开发领域的核心支柱,以其强大功能、灵活性及安全性广受认可。本文分三部分解析:基础特性如多语言支持、统一运行时环境;现代应用如企业级与Web开发、移动应用、云服务及游戏开发;以及未来趋势如性能优化、容器化、AI集成等,展望.NET在不断变化的技术环境中持续发展与创新。
222 4
|
6月前
|
自然语言处理 物联网 图形学
.NET 技术凭借其独特的优势和特性,为开发者们提供了一种高效、可靠且富有创造力的开发体验
本文深入探讨了.NET技术的独特优势及其在多个领域的应用,包括企业级应用、Web应用、桌面应用、移动应用和游戏开发。通过强大的工具集、高效的代码管理、跨平台支持及稳定的性能,.NET为开发者提供了高效、可靠的开发体验,并面对技术更新和竞争压力,不断创新发展。
229 7
|
6月前
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
91 4
|
7月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
80 1
|
6月前
|
XML 开发框架 .NET
.NET 9 中 LINQ 新增功能实操
.NET 9 中 LINQ 新增功能实操
|
7月前
|
存储 编译器
.Net特性Attribute的高级使用
【10月更文挑战第14天】在.NET中,特性(Attribute)是一种强大的机制,用于在代码中添加元数据。本文介绍了特性的高级用法,包括自定义特性、通过反射读取特性、条件编译与特性结合、多个特性应用以及特性继承。通过示例展示了如何创建自定义特性类、应用自定义特性,并通过反射获取特性信息。此外,还介绍了如何利用条件编译符号实现不同版本的代码控制,以及如何在一个代码元素上应用多个特性。最后,探讨了如何通过`AttributeUsage`控制特性的继承行为。
149 1
|
7月前
|
开发框架 .NET 开发工具
.NET 9 中 LINQ 新增的功能
.NET 9 中 LINQ 新增的功能
|
9月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
140 0
下一篇
oss创建bucket