步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)

简介:
[索引页]
[源码下载]


步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)


作者: webabcd


介绍
    ·LambdaExpressions(Lambda表达式)
    ·QuerySyntax(查询语法)
    ·AnonymousTypes(匿名类型)


示例
LambdaExpressions.cs (Lambda表达式)
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif using System.Xml.Linq; 
InBlock.gif 
InBlock.gif using System.Collections.Generic; 
InBlock.gif 
/// <summary> 
/// LambdaExpressions(Lambda表达式)的摘要说明 
/// </summary> 
InBlock.gif public  class LambdaExpressions 
InBlock.gif
InBlock.gif         public  int ID { get; set; } 
InBlock.gif         public  string Name { get; set; } 
InBlock.gif 
InBlock.gif         public  void LambdaExpressionsTest() 
InBlock.gif        { 
InBlock.gif                List<LambdaExpressions> list =  new List<LambdaExpressions> 
InBlock.gif                { 
InBlock.gif                         new LambdaExpressions { ID = 1, Name =  "webabcd" }, 
InBlock.gif                         new LambdaExpressions { ID = 2, Name =  "webabcdefg" }, 
InBlock.gif                         new LambdaExpressions { ID = 3, Name =  "webabcdefghijklmn" } 
InBlock.gif                }; 
InBlock.gif 
InBlock.gif                IEnumerable<LambdaExpressions> l = list.Where(le => le.Name ==  "webabcd"); 
InBlock.gif 
InBlock.gif                 // 上面的(Lambda表达式)等同于下面的(匿名方法) 
InBlock.gif 
InBlock.gif                 // IEnumerable<LambdaExpressions> l2 = list.Where(delegate(LambdaExpressions le) { return le.Name == "webabcd"; }); 
InBlock.gif 
InBlock.gif 
InBlock.gif 
InBlock.gif                 // 相关委托 
InBlock.gif                 // public delegate TResult Func<T, TResult>(T arg); 
InBlock.gif            
InBlock.gif                 // 相关Where扩展方法 
InBlock.gif                 // Func<TSource, bool>:接受一个类型为TSource的参数 
InBlock.gif                 // Func<TSource, bool>:某个需要满足的条件,返回bool值 
InBlock.gif                 // public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) 
InBlock.gif                 // { 
InBlock.gif                 //         foreach (TSource item in source) 
InBlock.gif                 //         { 
InBlock.gif                 //                 if (predicate(item)) 
InBlock.gif                 //                 { 
InBlock.gif                 //                         yield return item; 
InBlock.gif                 //                 } 
InBlock.gif                 //         } 
InBlock.gif                 // } 
InBlock.gif                 
InBlock.gif        } 
InBlock.gif}
 

QuerySyntax.cs(查询语法)
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif using System.Xml.Linq; 
InBlock.gif 
InBlock.gif using System.Collections.Generic; 
InBlock.gif 
/// <summary> 
/// QuerySyntax(查询语法)的摘要说明 
/// </summary> 
InBlock.gif public  class QuerySyntax 
InBlock.gif
InBlock.gif         public  int ID { get; set; } 
InBlock.gif         public  string Name { get; set; } 
InBlock.gif 
InBlock.gif         public  void QuerySyntaxTest() 
InBlock.gif        { 
InBlock.gif                List<QuerySyntax> list =  new List<QuerySyntax> 
InBlock.gif                { 
InBlock.gif                         new QuerySyntax { ID = 1, Name =  "webabcd" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcde" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdef" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefg" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefgh" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefghi" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefghij" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefghijk" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefghijkl" }, 
InBlock.gif                         new QuerySyntax { ID = 2, Name =  "webabcdefghijklm" }, 
InBlock.gif                         new QuerySyntax { ID = 3, Name =  "webabcdefghijklmn" } 
InBlock.gif                }; 
InBlock.gif 
InBlock.gif                IEnumerable<QuerySyntax> l = from o  in list 
InBlock.gif                                                                         where o.Name.Length > 10 
InBlock.gif                                                                         orderby o.Name.Length descending 
InBlock.gif                                                                         select o; 
InBlock.gif 
InBlock.gif                 // 上面的(查询语法)等同于下面的(LINQ扩展方法和Lambda表达式) 
InBlock.gif                 // 查询语法相对更容易理解 
InBlock.gif 
InBlock.gif                 // IEnumerable<QuerySyntax> l = list.Where(o => o.Name.Length > 10).OrderByDescending(o => o.Name.Length); 
InBlock.gif 
InBlock.gif 
InBlock.gif 
InBlock.gif                 // Projection(映射) 
InBlock.gif                 // 可以返回一个新的类型 
InBlock.gif                IEnumerable<Projection> l2 = from o  in list 
InBlock.gif                                                                            where o.Name.Length > 10 
InBlock.gif                                                                            orderby o.Name.Length descending 
InBlock.gif                                                                            select  new Projection { Name = o.Name }; 
InBlock.gif        } 
InBlock.gif
InBlock.gif 
/// <summary> 
/// 为了演示Projection(映射)而写的实体类 
/// </summary> 
InBlock.gif public  class Projection 
InBlock.gif
InBlock.gif         public  string Name { get; set; } 
InBlock.gif}
 
AnonymousTypes.cs匿名类型
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif using System.Xml.Linq; 
InBlock.gif 
InBlock.gif using System.Collections.Generic; 
InBlock.gif 
/// <summary> 
/// AnonymousTypes(匿名类型)的摘要说明 
/// </summary> 
InBlock.gif public  class AnonymousTypes 
InBlock.gif
InBlock.gif         public  int ID { get; set; } 
InBlock.gif         public  string Name { get; set; } 
InBlock.gif         public  int Age { get; set; } 
InBlock.gif 
InBlock.gif         public  void AnonymousTypesTest() 
InBlock.gif        { 
InBlock.gif                List<AnonymousTypes> list =  new List<AnonymousTypes> 
InBlock.gif                { 
InBlock.gif                         new AnonymousTypes { ID = 1, Name =  "webabcd", Age = 10 }, 
InBlock.gif                         new AnonymousTypes { ID = 2, Name =  "webabcdefg", Age = 20 }, 
InBlock.gif                         new AnonymousTypes { ID = 3, Name =  "webabcdefghijklmn", Age = 30 } 
InBlock.gif                }; 
InBlock.gif 
InBlock.gif                 // listAnonymousTypes - 匿名类型 
InBlock.gif                var listAnonymousTypes = from l  in list 
InBlock.gif                                                                 where l.Name ==  "webabcd" 
InBlock.gif                                                                 select  new { Name = l.Name, Age = l.Age }; 
InBlock.gif 
InBlock.gif                 foreach (var v  in listAnonymousTypes) 
InBlock.gif                { 
InBlock.gif                         // v - 匿名类型,可以在Visual Studio中得到编译时检查和完整的intellisense 
InBlock.gif                         string name = v.Name; 
InBlock.gif                         int age = v.Age; 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 // 声明匿名类型:将new关键词后面的类型名称省略掉 
InBlock.gif                var person =  new { Name =  "webabcd", Age = 27 }; 
InBlock.gif                 // person - 匿名类型,可以在Visual Studio中得到编译时检查和完整的intellisense 
InBlock.gif                 string myName = person.Name; 
InBlock.gif                 int myAge = person.Age; 
InBlock.gif        } 
InBlock.gif}
 
 
 



     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/344994 ,如需转载请自行联系原作者

相关文章
|
23天前
|
人工智能 开发框架 .NET
.NET技术的强大功能:.NET技术的基础特性、在现代开发中的应用、以及它如何助力未来的软件开发。
.NET技术是软件开发领域的核心支柱,以其强大功能、灵活性及安全性广受认可。本文分三部分解析:基础特性如多语言支持、统一运行时环境;现代应用如企业级与Web开发、移动应用、云服务及游戏开发;以及未来趋势如性能优化、容器化、AI集成等,展望.NET在不断变化的技术环境中持续发展与创新。
50 4
|
1月前
|
C# 开发者 Windows
在VB.NET项目中使用C#编写的代码
在VB.NET项目中使用C#编写的代码
33 0
|
2天前
|
开发框架 自然语言处理 .NET
C#一分钟浅谈:LINQ 查询表达式的使用技巧
【9月更文挑战第6天】LINQ(Language Integrated Query)是C#开发中的强大工具,使查询数据集合变得简单且接近自然语言。本文从基础入手,通过具体示例讲解LINQ查询表达式的使用技巧,包括过滤、排序和分组等操作。同时,文章还探讨了常见问题及解决方法,如性能优化、过早枚举和类型转换等,帮助开发者写出更高效、易维护的代码。
25 15
|
4天前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
27 6
|
10天前
|
JSON C# 开发者
💡探索C#语言进化论:揭秘.NET开发效率飙升的秘密武器💼
【8月更文挑战第28天】C#语言凭借其强大的功能与易用性深受开发者喜爱。伴随.NET平台演进,C#持续引入新特性,如C# 7.0的模式匹配,让处理复杂数据结构更直观简洁;C# 8.0的异步流则使异步编程更灵活高效,无需一次性加载全部数据至内存。通过示例展示了模式匹配简化JSON解析及异步流实现文件逐行读取的应用。此外,C# 8.0还提供了默认接口成员和可空引用类型等特性,进一步提高.NET开发效率与代码可维护性。随着C#的发展,未来的.NET开发将更加高效便捷。
23 1
|
23天前
|
开发框架 .NET 编译器
总结一下 C# 如何自定义特性 Attribute 并进行应用
总结一下 C# 如何自定义特性 Attribute 并进行应用
|
25天前
|
数据采集 API 开发者
.NET 8新特性:使用ConfigurePrimaryHttpMessageHandler定制HTTP请求
在.NET 8中,通过`ConfigurePrimaryHttpMessageHandler`方法,开发者能更精细地控制HTTP请求,这对于构建高效爬虫尤为重要。此特性支持定制代理IP、管理Cookie与User-Agent,结合多线程技术,有效应对网络限制及提高数据采集效率。示例代码展示了如何设置代理服务器、模拟用户行为及并发请求,从而在遵守网站规则的同时,实现快速稳定的数据抓取。
.NET 8新特性:使用ConfigurePrimaryHttpMessageHandler定制HTTP请求
|
7天前
|
开发者 C# Android开发
Xamarin 与 .NET:解锁现代化移动应用开发的超级武器——深入探讨C#与.NET框架如何赋能跨平台应用,实现高效编码与卓越性能
【8月更文挑战第31天】Xamarin 与 .NET 的结合为开发者提供了强大的平台,用于构建现代化移动应用。通过 C# 和 .NET 框架,Xamarin 可以实现一次编写、多平台运行,覆盖 iOS、Android 和 Windows。这种方式不仅节省了开发时间和成本,还保证了应用的一致性和高质量。Xamarin 是一个开源框架,专为跨平台移动应用开发设计,允许使用 C# 语言和 .NET 核心库构建原生应用,并访问各平台特定功能。微软维护的 Xamarin 是 Visual Studio 生态系统的一部分,极大地提高了开发效率。
27 0
|
7天前
|
开发者 Apache 程序员
揭秘Apache Wicket:页面生命周期背后的神秘力量!
【8月更文挑战第31天】李工是一位热爱Web开发的程序员,近日在技术博客上分享了他对Apache Wicket框架的学习心得,特别是页面生命周期的理解。他认为掌握Wicket页面生命周期对于开发富交互式Web应用至关重要。他通过一个简单的计数器应用示例,详细解释了Wicket的组件化设计理念以及页面和组件在生命周期中的变化。
16 0
|
1月前
|
存储 C#
揭秘C#.Net编程秘宝:结构体类型Struct,让你的数据结构秒变高效战斗机,编程界的新星就是你!
【8月更文挑战第4天】在C#编程中,结构体(`struct`)是一种整合多种数据类型的复合数据类型。与类不同,结构体是值类型,意味着数据被直接复制而非引用。这使其适合表示小型、固定的数据结构如点坐标。结构体默认私有成员且不可变,除非明确指定。通过`struct`关键字定义,可以包含字段、构造函数及方法。例如,定义一个表示二维点的结构体,并实现计算距离原点的方法。使用时如同普通类型,可通过实例化并调用其成员。设计时推荐保持结构体不可变以避免副作用,并注意装箱拆箱可能导致的性能影响。掌握结构体有助于构建高效的应用程序。
47 7

相关课程

更多
下一篇
DDNS