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
- c#学习笔记-匿名
- C#学习笔记11-匿名类型var
- 【C#学习】匿名方法
- C#学习笔记-匿名方法和lambda表达式
- C#学习笔记18-匿名方法和Lambda表达式
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- C#学习笔记(三)—–C#高级特性:匿名方法
- C#学习笔记(三)—–C#高级特性:匿名类型
- android学习笔记 匿名Binder
- TIJ学习笔记-匿名类
- Go学习笔记:匿名成员
- android学习笔记 匿名Binder
- Java学习笔记----匿名对象
- Python学习笔记-匿名函数
- 学习笔记-匿名内部类
- 软件版本的自动检测及更新
- Amcharts图表控件的使用
- 《JAVA与模式》之命令模式(行为)
- 一些学习编程的网站介绍
- Shell调试
- c#学习笔记-匿名
- leetcode之Reverse Words in a string
- 多屏文字tab标签幻灯片(右侧文字介绍)
- jersey实现还要整合在spring
- eclipse显示行号设置
- RHEL / Centos 6: Install Nginx Using Yum Command
- 【STL】函数适配器
- 什么是SEM,如何做好SEM
- appweb-4.3.4-0移植到ARM