c#学习笔记-匿名

一、匿名类型:

组成包括: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值