LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx

LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx

ID:57650239

大小:19.21 KB

页数:8页

时间:2020-08-30

LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx_第1页
LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx_第2页
LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx_第3页
LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx_第4页
LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx_第5页
资源描述:

《LINQ的经典例子-Where-Select、SelectMany、SkipWhile子句中使用数组索引.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Where子句的用法我们除了可以如下方式书写带Where子句的LINQ外:frompinproducts wherep.UnitsInStock>0&&p.UnitPrice>3.00M selectp;还可以对数组(所有实现了IEnumerable接口的对象都可以)的实体使用Where扩展方法。 把一个查询语句写成多个扩展函数的方式,这其实是编译器处理查询语句的方法,比如下面的查询语句:int[]arr=newint[]{8,5,89,3,56,4,1,58};varm=fromninarrwheren<5orderbynsel

2、ectn;编译器在编译后,替我们产生的代码等价于如下的代码:IOrderedSequencem=arr.Where(delegate(intn){   return(n<5);}).OrderBy(delegate(intn){   returnn;}); 下面我们来看一个使用Where扩展方法的例子:我们有一个字符串数组,一次是0到9的英文单词,我们查询出这10个字符的长度比它所在数组的位置这两个数字比较小的英文单词.这个查询可能有些绕口,你可以先看下面这些代码:publicstaticvo

3、idLinqDemo01(){   string[]digits={"zero","one","two","three","four","five","six","seven","eight","nine"};   varshortDigits=digits.Where((dd,aa)=>dd.Length

4、erthanitsvalue.",d);}输出结果:Shortdigits:Thewordfiveisshorterthanitsvalue.Thewordsixisshorterthanitsvalue.Thewordsevenisshorterthanitsvalue.Thewordeightisshorterthanitsvalue.Thewordnineisshorterthanitsvalue.下面我们就来分析上述代码中最核心的代码:digits.Where((dd,aa)=>dd.Length

5、什么? 1、Where子句其实是用扩展方法来实现的如果你对扩展方法不熟悉,请先看我之前的几篇博客:C#3.0中的扩展方法(ExtensionMethods)C#3.0中使用扩展方法来扩展接口OrcasBeta1对多个同名扩展方法的处理逻辑微软替我们实现的 Where子句对应的扩展函数实际是如下的定义:namespaceSystem.Linq{   publicdelegateTResultFunc(TArg0arg0,TArg1arg1);   publicstaticclassEnume

6、rable   {       publicstaticIEnumerableWhere(thisIEnumerablesource,Funcpredicate);       publicstaticIEnumerableWhere(thisIEnumerablesource,Funcpredicate);   }}其中红色字体的那个扩展函数,就是我们上面代码

7、实际使用的扩展函数。我们这个扩展函数参数:Funcpredicate的定义看上面代码的绿色delegate代码。 2、Where子句参数书写的是Lambda表达式如果你不清楚什么是Lambda表达式,你可以参看我之前的博客:C#3.0的Lambda表达式(LambdaExpressions)(dd,aa)=>dd.Length

8、关键字子句。3、这个Where子句中Lambda表达式第二个参数是数组索引,我们可以在Lambda表达式内部使用数组索引。来做一些复杂的判断。具有数组索引的LINQ关键字除了Where还以下几个Select,SelectMany,Count,All

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。