LINQ基础之From和GroupBy子句_第1页
LINQ基础之From和GroupBy子句_第2页
LINQ基础之From和GroupBy子句_第3页
LINQ基础之From和GroupBy子句_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第LINQ基础之From和GroupBy子句分析:

查询表达式必须以from子句开头

例子中cust是范围变量,范围变量类似于foreach循环中的迭代变量,但在查询表达式中,实际上不发生迭代。执行查询时,范围变量将用作对Customers中的每个后续元素的引用。因为编译器可以推断cust的类型,所以不必显示指定此类型。

Customers是数据源,实现了IEnumerable或IEnumerable(T)或其派生接口的

二、复合FROM子句

查询出成绩有90分以上的学生,得到他们的名字和成绩

//数据源

IListStudentstudents=newListStudent

newStudent{Name="Kevin",Score=newListint{89,93,88,78}},

newStudent{Name="Jackie",Score=newListint{92,87,83,91}},

newStudent{Name="Helen",Score=newListint{53,76,72,62}}

//所有的Linq查询操作都由以下三个不同的操作组成:

//1.获得数据源

//2.创建查询

//3.执行查询

//使用复合from子句查询命令

vargetStudent=

fromstudentinstudents

fromscoreinstudent.Score

wherescore90

selectnew{Name=student.Name,Score=score};

foreach(varstingetStudent)

Console.WriteLine("NAME:{0},SCORE:{1}",st.Name,st.Score);

}

分析:

我们可以看到学生对象中有个Score属性,Score属性本身就是List集合,这时候我们就要用到复合from子句进行查询了。首先遍历学生对象集合中的每个学生对象,然后在用另一个from子句,对每个学生对象中的Score属性进行遍历,筛选出含有90分以上的学生信息进行返回。

GroupBy子句

group子句返回一个IGrouping(TKey,Telement)对象序列,编译时,group子句被转换成对GroupBy方法的调用。

根据首字母分组,并打印到控制台

//数据源

string[]fruits={"apple","banana","peach","orange","melon","lemon"};

//分组查询的查询语句

varquery=fromfinfruits

groupfbyf[0];

//执行查询

foreach(varlettersinquery)

Console.WriteLine("wordsthatstartwithletter:"+letters.Key);

foreach(varwordinletters)

Console.WriteLine(word);

}

分析:

首先遍历字符串数组中的每个字符串,然后根据每个字符串的首字母进行分组,返回结果.

varquery=fromfinfruits

groupfbyf[0]intog

whereg.Key=='p'||g.Key=='b'

selectg;

分析:

如果您想要对每个组执行附加查询操作,则可以使用into上下文关键字指定一个临时标识符。使用into时,必须继续编写该查询,并最终用一个select语句或另一个group子句结束该查询。

string[]strs={"胡广成","张国荣","刘德华","故国冰封","万里雪飘","AAA","胡翰轩","张杰"};

varlist5=strs

//.Where(a=a.Length==3)

.Select(item=item)

.GroupBy(item=item.Length);//分组分组依据是字符串的长度

foreach(variteminlist5)

Console.WriteLine("----------------");

Console.WriteLine($"分组字段是{item.Key}");//item.Key是分组依据显示分组字段

foreach(varitemsinitem)//内层循环遍历分组项

Console.WriteLine(items);

}

分析:

按照名字的长度进行分组显示。

三、多字段分组示例

GroupBy(x=new{x.a,x.b,x.c}).Select(x=(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论