C#步步为营VS 二〇〇八 + .NET 3.5(4) – C# 3.0新本性之LambdaExpressions(拉姆da表明式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)

[索引页] [源码下载]

步步为营VS 二零零六 + .NET 3.5(4) – C#
3.0新特色之LambdaExpressions(拉姆da表明式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)

作者:webabcd

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

示例
LambdaExpressions.cs(Lambda表达式)

C# 1using System;
C# 2using System.Data;
C# 3using System.Configuration;
C# 4using System.Linq;
C# 5using System.Web;
C# 6using System.Web.Security;
C# 7using System.Web.UI;
C# 8using System.Web.UI.WebControls;
C# 9using System.Web.UI.WebControls.WebParts;
C# 10using System.Web.UI.HtmlControls;
C# 11using System.Xml.Linq;
C# 12
C# 13using System.Collections.Generic;
C# 14
C# 15C# 16/**//// <summary>
C# 17/// LambdaExpressions(Lambda表明式)的摘要表达
C# 18/// </summary>
C# 19public class LambdaExpressions
C# 20C# 21C# 22{
C# 23C# 24    public int ID C# 25{ get; set; }
C# 26C# 27    public string Name C# 28{ get; set; }
C# 29
C# 30    public void LambdaExpressionsTest()
C# 31C# 32    C# 33{
C# 34        List<LambdaExpressions> list = new List<LambdaExpressions>
C# 35C# 36        C# 37{
C# 38C# 39            new LambdaExpressions C# 40{ ID = 1, Name = “webabcd” },
C# 41C# 42            new LambdaExpressions C# 43{ ID = 2, Name = “webabcdefg” },
C# 44C# 45            new LambdaExpressions C# 46{ ID = 3, Name = “webabcdefghijklmn” }
C# 47        };
C# 48
C# 49        IEnumerable<LambdaExpressions> l = list.Where(le => le.Name == “webabcd”);
C# 50
C# 51        // 上面的(Lambda表明式)等同于下边的(匿名格局)
C# 52
C# 53        // IEnumerable<LambdaExpressions> l2 = list.Where(delegate(LambdaExpressions le) { return le.Name == “webabcd”; });
C# 54
C# 55
C# 56
C# 57        // 相关委托
C# 58        // public delegate TResult Func<T, TResult>(T arg);
C# 59     
C# 60        // 相关Where增添方法
C# 61        // Func<TSource, bool>:接受3个门类为TSource的参数
C# 62        // Func<TSource, bool>:有个别须求满意的规格,再次来到bool值
C# 63        // public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
C# 64        // {
C# 65        //     foreach (TSource item in source)
C# 66        //     {
C# 67        //         if (predicate(item))
C# 68        //         {
C# 69        //             yield return item;
C# 70        //         }
C# 71        //     }
C# 72        // }
C# 73        
C# 74    }
C# 75}
C# 76

QuerySyntax.cs(查询语法)

C# 77using System;
C# 78using System.Data;
C# 79using System.Configuration;
C# 80using System.Linq;
C# 81using System.Web;
C# 82using System.Web.Security;
C# 83C#,using System.Web.UI;
C# 84using System.Web.UI.WebControls;
C# 85using System.Web.UI.WebControls.WebParts;
C# 86using System.Web.UI.HtmlControls;
C# 87using System.Xml.Linq;
C# 88
C# 89using System.Collections.Generic;
C# 90
C# 91C# 92/**//// <summary>
C# 93/// QuerySyntax(查询语法)的摘要表达
C# 94/// </summary>
C# 95public class QuerySyntax
C# 96C# 97C# 98{
C# 99C# 100    public int ID C# 101{ get; set; }
C# 102C# 103    public string Name C# 104{ get; set; }
C# 105
C# 106    public void QuerySyntaxTest()
C# 107C# 108    C# 109{
C# 110        List<QuerySyntax> list = new List<QuerySyntax>
C# 111C# 112        C# 113{
C# 114C# 115            new QuerySyntax C# 116{ ID = 1, Name = “webabcd” },
C# 117C# 118            new QuerySyntax C# 119{ ID = 2, Name = “webabcde” },
C# 120C# 121            new QuerySyntax C# 122{ ID = 2, Name = “webabcdef” },
C# 123C# 124            new QuerySyntax C# 125{ ID = 2, Name = “webabcdefg” },
C# 126C# 127            new QuerySyntax C# 128{ ID = 2, Name = “webabcdefgh” },
C# 129C# 130            new QuerySyntax C# 131{ ID = 2, Name = “webabcdefghi” },
C# 132C# 133            new QuerySyntax C# 134{ ID = 2, Name = “webabcdefghij” },
C# 135C# 136            new QuerySyntax C# 137{ ID = 2, Name = “webabcdefghijk” },
C# 138C# 139            new QuerySyntax C# 140{ ID = 2, Name = “webabcdefghijkl” },
C# 141C# 142            new QuerySyntax C# 143{ ID = 2, Name = “webabcdefghijklm” },
C# 144C# 145            new QuerySyntax C# 146{ ID = 3, Name = “webabcdefghijklmn” }
C# 147        };
C# 148
C# 149        IEnumerable<QuerySyntax> l = from o in list
C# 150                                     where o.Name.Length > 10
C# 151                                     orderby o.Name.Length descending
C# 152                                     select o;
C# 153
C# 154        // 下边的(查询语法)等同于下边的(LINQ扩张方法和Lambda表明式)
C# 155        // 查询语法相对更便于掌握
C# 156
C# 157        // IEnumerable<QuerySyntax> l = list.Where(o => o.Name.Length > 10).OrderByDescending(o => o.Name.Length);
C# 158
C# 159
C# 160
C# 161        // Projection(映射)
C# 162        // 可以回到一个新的门类
C# 163        IEnumerable<Projection> l2 = from o in list
C# 164                                      where o.Name.Length > 10
C# 165                                      orderby o.Name.Length descending
C# 166C# 167                                      select new Projection C# 168{ Name = o.Name };
C# 169    }
C# 170}
C# 171
C# 172C# 173/**//// <summary>
C# 174/// 为了演示Projection(映射)而写的实体类
C# 175/// </summary>
C# 176public class Projection
C# 177C# 178C# 179{
C# 180C# 181    public string Name C# 182{ get; set; }
C# 183}
C# 184

AnonymousTypes.cs(匿名类型)

C# 185using System;
C# 186using System.Data;
C# 187using System.Configuration;
C# 188using System.Linq;
C# 189using System.Web;
C# 190using System.Web.Security;
C# 191using System.Web.UI;
C# 192using System.Web.UI.WebControls;
C# 193using System.Web.UI.WebControls.WebParts;
C# 194using System.Web.UI.HtmlControls;
C# 195using System.Xml.Linq;
C# 196
C# 197using System.Collections.Generic;
C# 198
C# 199C# 200/**//// <summary>
C# 201/// AnonymousTypes(匿名类型)的摘要表明
C# 202/// </summary>
C# 203public class AnonymousTypes
C# 204C# 205C# 206{
C# 207C# 208    public int ID C# 209{ get; set; }
C# 210C# 211    public string Name C# 212{ get; set; }
C# 213C# 214    public int Age C# 215{ get; set; }
C# 216
C# 217    public void AnonymousTypesTest()
C# 218C# 219    C# 220{
C# 221        List<AnonymousTypes> list = new List<AnonymousTypes>
C# 222C# 223        C# 224{
C# 225C# 226            new AnonymousTypes C# 227{ ID = 1, Name = “webabcd”, Age = 10 },
C# 228C# 229            new AnonymousTypes C# 230{ ID = 2, Name = “webabcdefg”, Age = 20 },
C# 231C# 232            new AnonymousTypes C# 233{ ID = 3, Name = “webabcdefghijklmn”, Age = 30 }
C# 234        };
C# 235
C# 236        // listAnonymousTypes – 匿名类型
C# 237        var listAnonymousTypes = from l in list
C# 238                                 where l.Name == “webabcd”
C# 239C# 240                                 select new C# 241{ Name = l.Name, Age = l.Age };
C# 242
C# 243        foreach (var v in listAnonymousTypes)
C# 244C# 245        C# 246{
C# 247            // v – 匿名类型,可以在Visual Studio中收获编译时检查和整体的intellisense
C# 248            string name = v.Name;
C# 249            int age = v.Age;
C# 250        }
C# 251
C# 252        // 注脚匿名类型:将new关键词前面的种类名称省略掉
C# 253C# 254        var person = new C# 255{ Name = “webabcd”, Age = 27 };
C# 256        // person – 匿名类型,能够在Visual Studio中获取编译时检查和总体的intellisense
C# 257        string myName = person.Name;
C# 258        int myAge = person.Age;
C# 259    }
C# 260}

OK [源码下载]

相关文章