c#学习笔记-匿名

来源:互联网 发布:充电宝什么牌子好 知乎 编辑:程序博客网 时间:2024/05/26 02:53

一、匿名类型:

组成包括:Var、赋值运算符、非空初始值;

特性:1、匿名类型既支持简单类型(必须是非空初始值),也支持复杂类型,是一个以New开头的初始化项;

           2、匿名类型是只读属性,没有属性设置器,一旦初始化就不可更改;

           3、匿名类型可以在循环中用作初始化器;

           4、匿名类型可以智能感应;

用途:当类型仅仅被当前使用或者用来存储查询结果。

匿名类型结合LINQ使用例子:

 var personWithCompanyList = from person in personList                                    join company in companyList on penson.CompanyID equals company.CompanyID                                    select new { PersonName = person.Name, CompanyName = company.Name };        foreach(var item in personWithCompanyList)    {      Console.WriteLine (string.Formt("{0}\n:{1}",item.PersonName,item.CompanyName));    }


new之前的代码是LINQ,之后的是匿名类型的初始化项,该匿名类型包含两个属性,PersonName、CompanyName

二、在查询中使用Lambda表达式。

LINQ实际上是基于扩展方法和Lambda表达式的;LINQ查询也可以通过扩展方法来实现:

       foreach(var item in personList.Select(person=>new { PersonName = person.Name,CompanyName = person.CompanyID ==0 ? "Jeck":"Mike"}))    Console.WriteLine (string.Formt("{0}\n:{1}",item.PersonName,item.CompanyName));

针对LINQ设计的扩展方法大都涉及到泛型委托,System命名空间泛型委托可分为三类:Action、Func和predicate。Action用于执行一个操作,无返回值;Func执行一个操作并返回一个值;predicate用于定义一组条件并判断参数是否符合条件;Action和Func比较多些;

上面Select方法就是接受的一个Func委托,Lambda就是一个简洁的委托;

Lambda调用Where方法:

foreach(var item in personWithCompanyList.Where(f=>f.CompanyName =="Mike")
Console.WriteLine(item.PersonName);

Lambda调用OrderByDescending方法:

 foreach(var item in personList.OrderByDescending(f=>f.Name))    {        Console.WhiteLine(item.Name);    }




 

0 0
原创粉丝点击