linq中文教程(三)

本文探讨了LINQ在C#中的应用,通过一个简单的例子展示了var关键字的作用和优势,比较了使用var与明确指定类型的效果,并介绍了如何使用LINQ方法如distinct()与groupby()来处理数据,同时提供了将结果转换为更易读形式的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子虽然简单,确能从中看出LINQ的一些端倪。首先,var是什么东东?

  看起来,有点像javascript里面的弱类型的变量声明。但是,C#是强类型的,尽管你用var来声明,编译器还是可以根据上下文推倒出它当前的类型。比如这个例子里面,result就是IEnumerable 类型的。在这里面,写IEnumerable和写var是一样效果的,显然,var会简单得多。你不用考虑数据操作的返回值是什么类型,还能享受强类型声明带来的方便实惠……

  还有from m in methods这句,m是什么东西,m是隐式声明的一个变量,尽管没有声明,但编译器根据上下文,推断出它的类型是MethodInfo型的!.NET Framework 3.5的编译器的确是聪明了很多 ^^

  上面这个例子运行起来的结果中有很多重复的记录,我们可以用distinct()来过滤掉重复的,和SQL还是很相似的说。

  


var result = (from m in methods
  where m.IsStatic != true
  select m.Name).Distinct();

  或者用group by 也可以

  


var result = from m in methods
  where m.IsStatic != true
  group m by m.Name;

  但是这样子写,在输出的时候,显示的是 System.Linq.Lookup`2+Grouping[System.String,System.Reflection.MethodInfo],所以,再做一些修改

  


var result = from m in methods
  where m.IsStatic != true
  group m by m.Name into g
  select new { MethodName = g.Key, Overload = g.Count() };

  这里面又有一些新鲜的了——select new { MethodName = g.Key, Overload = g.Count() },先来看一个简单一些的例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值