Linq基础学习资料.docx

上传人:b****2 文档编号:18619090 上传时间:2023-08-20 格式:DOCX 页数:76 大小:180.82KB
下载 相关 举报
Linq基础学习资料.docx_第1页
第1页 / 共76页
Linq基础学习资料.docx_第2页
第2页 / 共76页
Linq基础学习资料.docx_第3页
第3页 / 共76页
Linq基础学习资料.docx_第4页
第4页 / 共76页
Linq基础学习资料.docx_第5页
第5页 / 共76页
Linq基础学习资料.docx_第6页
第6页 / 共76页
Linq基础学习资料.docx_第7页
第7页 / 共76页
Linq基础学习资料.docx_第8页
第8页 / 共76页
Linq基础学习资料.docx_第9页
第9页 / 共76页
Linq基础学习资料.docx_第10页
第10页 / 共76页
Linq基础学习资料.docx_第11页
第11页 / 共76页
Linq基础学习资料.docx_第12页
第12页 / 共76页
Linq基础学习资料.docx_第13页
第13页 / 共76页
Linq基础学习资料.docx_第14页
第14页 / 共76页
Linq基础学习资料.docx_第15页
第15页 / 共76页
Linq基础学习资料.docx_第16页
第16页 / 共76页
Linq基础学习资料.docx_第17页
第17页 / 共76页
Linq基础学习资料.docx_第18页
第18页 / 共76页
Linq基础学习资料.docx_第19页
第19页 / 共76页
Linq基础学习资料.docx_第20页
第20页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Linq基础学习资料.docx

《Linq基础学习资料.docx》由会员分享,可在线阅读,更多相关《Linq基础学习资料.docx(76页珍藏版)》请在冰点文库上搜索。

Linq基础学习资料.docx

Linq基础学习资料

Linq基础学习

目录

1LINQ查询结果集1

2System.Array数组1

2.1基于System.Array定义数组1

2.2基于类型定义数组1

2.3数组元素的清空1

2.4System.Array类静态成员1

2.5不用循环填充数组1

2.6数组类实例成员2

3System.Collections集合2

3.1ArrayList2

3.1.1实例成员2

3.1.2静态成员2

3.2List3

3.3Hashtable6

3.4SortedList6

3.5SortedList7

3.6Queue8

3.7Stack8

3.8LinkedList8

3.9HashSet9

4System.Linq10

4.1System.Linq.Enumerable10

4.2System.Linq.Queryable10

4.3System.Linq.Lookup10

4.4System.Linq.Expressions.Expression10

5接口10

5.1IEnumerable、IEnumerator10

5.1.1正常使用10

5.1.2C#的yield12

5.2IEnumerable12

5.3IEnumerator12

5.4ICollection12

5.5ICollection13

5.6IList13

5.7IList13

5.8IEqualityComparer13

5.9IEqualityComparer13

5.10IDictionary13

5.11IDictionary13

5.12IDictionaryEnumerator13

5.13IComparer13

5.13.1接口方法说明intCompare(objectx,objecty)13

5.13.2ArrayList.Sort(IComparer)方法13

5.14IComparer14

5.14.1接口方法overrideintCompare(Tx,Ty)说明14

5.14.2List.Sort(IComparer)方法14

5.15System.Linq.IGrouping14

5.16System.Linq.ILookup14

5.17System.Linq.IOrderedEnumerable14

5.18System.Linq.IOrderedQueryable14

5.19System.Linq.IOrderedQueryable15

5.20System.Linq.IQueryable15

5.21System.Linq.IQueryable15

5.22System.Linq.IQueryProvider15

6集合扩展方法15

6.1集合扩展方法的实现:

一个Where的例子15

6.2延迟类15

6.2.1Select选择16

6.2.2SelectMany选择16

6.2.3Where条件16

6.2.4OrderBy排序升17

6.2.5OrderByDescending排序降17

6.2.6GroupBy分组17

6.2.7Join联合查询18

6.2.8GroupJoin18

6.2.9Take获取集合的前n个元素19

6.2.10Skip跳过集合的前n个元素19

6.2.11Distinct过滤集合中的相同项19

6.2.12Union连接不同集合,自动过滤相同项19

6.2.13Concat连接不同集合,不会自动过滤相同项19

6.2.14Intersect获取不同集合的相同项(交集)20

6.2.15Except从某集合中删除其与另一个集合中相同的项20

6.2.16Reverse反转集合20

6.2.17TakeWhile条件第一次不成立就跳出循环20

6.2.18SkipWhile条件第一次不成立就失效,将后面的数据全取20

6.2.19Cast将集合转换为强类型集合21

6.2.20OfType过滤集合中的指定类型21

6.3不延迟(浅复本)21

6.3.1Single集合中符合条件的唯一元素,浅复本21

6.3.2SingleOrDefault集合中符合条件的唯一元素(没有则返回类型默认值),浅复本21

6.3.3First集合的第一个元素,浅复本21

6.3.4FirstOrDefault集合中的第一个元素(没有则返回类型默认值),浅复本22

6.3.5Last集合中的最后一个元素,浅复本22

6.3.6LastOrDefault集合中的最后一个元素(没有则返回类型默认值),浅复本22

6.3.7ElementAt集合中指定索引的元素,浅复本22

6.3.8ElementAtOrDefault集合中指定索引的元素(没有则返回类型默认值),浅复本22

6.3.9Contains判断集合中是否包含有某一元素22

6.3.10Any判断集合中是否有元素满足某一条件22

6.3.11All判断集合中是否所有元素都满足某一条件23

6.3.12SequenceEqual判断两个集合内容是否相同23

6.3.13Count、LongCount集合中的元素个数23

6.3.14Average、Sum集合平均值求和23

6.3.15Max、Min集合最大值,最小值24

6.3.16Aggregate根据输入的表达式获取一个聚合值24

6.3.17DefaultIfEmpty查询结果为空则返回默认值,浅复本24

6.3.18ToArray将集合转换为数组,浅复本24

6.3.19ToList将集合转换为List集合,浅复本25

6.3.20ToDictionary将集合转换为集合,浅复本25

7Lambda表达式25

7.1例1(比效)25

7.2例2(多参)27

7.3例3(list.Where)27

7.4Lambda表达式中Lifting28

8QuerySyntax查询语法29

8.1frominselect30

8.2orderby排序30

8.3groupbyinto分组31

8.4joininonequals联合查询33

8.5into汇总33

9DataSource数据绑定34

LINQ查询结果集

Linq

System.Collections.Generic.IEnumerable

LinqtoDataSet

System.Data.EnumerableRowCollection

LinqtoSQL

System.Linq.IQueryable

LinqtoXML

System.Collections.Generic.IEnumerable

System.Array数组

所有数组都继承于System.Array,数组可以用System.Array建立

数组可以是一维也可以是多维数组。

"维数"对应于用来识别每个数组元素的下标个数。

维数可以多达32维。

数组的每一维都有一个非零的长度。

在数组的每一维中,数组元素按下标0到该维最高下标值连续排列.数组没有固定大小。

数组在创建以后仍可以改变大小。

数组是对象,因此每种数组类型都是一个单独的引用类型。

这意味着:

1.数组变量中含有指向数据的指针,这些数据包含元素、秩和长度信息。

2.在将一个数组变量赋值给另一个数组变量时,只有指针进行了复制。

3.两个数组变量只有在具有相同的维数和元素数据类型时,才能看成是同一数据类型的数组变量。

基于System.Array定义数组

System.Arrayx=System.Array.CreateInstance(typeof(string),7);

x.SetValue("4",0);

x.SetValue("8",1);

x.SetValue("7",2);

x.SetValue("1",3);

x.SetValue("3",4);

x.SetValue("2",5);

x.SetValue("5",6);

System.Console.WriteLine(x.GetValue(5));

使用这种方式声明,只能用SetValue与GetValue方法进行赋值与取值,

不能使用x[i]的方式,也不会有x[i].方法()出现

基于类型定义数组

类型[,]数组名=new类型[该维个数,该维个数];

类型[,]数组名;

数组名=new类型[个数,个数];

类型[,]数组名;

数组名=new类型[,]{{{值1,值2,值3},{值1,值2,值3}};

类型[,]数组名={{值1,值2,值3},{值1,值2,值3}};

类型[]数组名={{值1,值2,值3};

数组元素的清空

数组名=null;

这时不只数组中的元素数据被清空了,而且数组的元素也被清空了.

如果要再使用该数组,需要用重新指定维中的元素个数.

数组的维结构不能被清除.

System.Array类静态成员

清空指定数组位置中元素的值

Array.Clear(数组名,从第几个开始,清除几个)

把[源数组名]中的数据复制到[目标数组名]

Array.Copy(源数组名,目标数组名,要复制的个数)

按升序排列.只能对一维数组使用

Array.Sort(数组名)

对数组中的元素的顺序返转.

Array.Reverse(数组名)

从前向后在数组中查找指定的值.反回在数组中的位置值,如果没找到返回-1,第一个位置是0.

i=Array.IndexOf(数组名,要找的内容,开始位置)

从后向前在数组中查找指定的值.反回在数组中的位置值,如果没找到返回-1,第一个位置是0.

i=Array.LastIndexOf(数组名,要找的内容,开始位置)

不用循环填充数组

string[]v=newstring[50];

v[0]="wxwinter";

System.Collections.ArrayList.Repeat(v[0],v.Length).CopyTo(v);

泛型方法见集合的实例泛型方法

数组类实例成员

属性

Rank

返回数组的维数

属性

Length

返回数组中元素的个数.

方法

GetLength(维数)

返回指定维数中元素的个数.第一维是0

扩展方法见集合扩展方法

System.Collections集合

ArrayList

System.Collections

一个数组型集合,使用的是随顺存储

实例成员

Capacity属性

获取或设置ArrayList可包含的元素数.当实际元素超过Capacity属性时,Capacity属性会在原来的数值上翻倍

Count属性

集合中元素的个数

int=Add(object)

将对象添加到集合尾部

AddRange(Array/List)

将ICollection的元素添加到ArrayList的末尾

object=Clone()

创建ArrayList的浅表副本

ArrayList=GetRange(index,count)

源ArrayList中元素的子集.

可以看成一个视图,两个集合数据是同步的

Insert(i,object)

将对象插入到集合的指定位置

InsertRange(index,Array/List)

将ICollection的元素插入到ArrayList的指定索引处

Remove(object)

从集合中移除指定对象

RemoveAt(index)

从集合中移除指定位置处的对象

RemoveRange(index,count)

从ArrayList中移除一定范围的元素

SetRange(index,Array/List)

将参数中的集合覆盖到调用该方法的集合的指定位置

Reverse()

返转集合中的对象

Sort()

对集合排序

对象集合见System.IComparable接口

Sort(IComparer)方法见System.Collections.IComparer接口

Clear()

清除集合中所有元素

向后查找

Integer=集合名.IndexOf(要找的内容变量,开始找的位置)

从前向后在数组中查找指定的值.反回在数组中的位置值,如果没找到返回-1,第一个位置是0.

向前查找

Integer=集合名.LastIndexOf(要找的内容变量,开始位置)

从后向前在数组中查找.反回在数组中的位置值,如果没找到返回-1

访问集合中的成员

集合[index]

静态成员

ArrayListls2=ArrayList.FixedSize(ls1)

ls2的元素允许修改,但不允许添加或移除。

两个集合数据是同步的

ArrayListls2=ArrayList.ReadOnly(ls1)

ls2的元素只读。

两个集合数据是同步的

List

System.Collections.Generic

System.Collections.Generic.Listjh=newList();

jh.Add(newTextBox());

jh.Add(newTextBox());

jh.Add(newTextBox());

inti=100;

foreach(System.Windows.Forms.TextBoxtpinjh)

{

i=i+100;

tp.Text=i.ToString();

tp.Left=i;

this.Controls.Add(tp);

}

classa

{

publica(stringv)

{s=v;}

publicstrings;

}

//使用

System.Collections.Generic.Listjh=newList();

jh.Add(newa("123"));

jh.Add(newa("456"));

jh.Add(newa("789"));

foreach(atpinjh)

{

System.Console.WriteLine(tp.s);

}

除ArrayList方法外

ConvertAll

publicListConvertAll(Converterconverter)

创建复本

调用委托

System.Converter

publicdelegateTOutputConverter(TInputinput);

将对象从一种类型转换为另一种类型的方法

1.将当前List中的元素转换为另一种类型,并返回包含转换后的元素的列表

标准委托

publicstaticvoidMain()

{

Listls=newList(){"1","2","3"};

//System.Convertercw=newConverter(stringToint);

//Listli=ls.ConvertAll(cw);

Listli=ls.ConvertAll(stringToint);

}

publicstaticintstringToint(strings)

{

returnint.Parse(s);

}

匿名方法

Listls=newList(){"1","2","3"};

Listli=ls.ConvertAll(delegate(strings){returnint.Parse(s);});

Lambda表达式

Listls=newList(){"1","2","3"};

Listli=ls.ConvertAll(i=>int.Parse(i));

集合扩展方法

Listls=newList(){"1","2","3"};

//System.Collections.Generic.IEnumerableli=ls.Select(i=>int.Parse(i));;

varli=ls.Select(i=>int.Parse(i));

1.将当前List中的元素值批量修改

staticvoidMain(string[]args)

{

Listls=newList(){"1","2","3"};

Listli=ls.ConvertAll(stringAdd);

}

publicstaticstringstringAdd(strings)

{

returns+"wxd";

}

ForEach

publicvoidForEach(Actionaction)

对List的每个元素执行指定操作

调用委托

System.Action

publicdelegatevoidAction(Tobj)

对传递给它的对象执行某个操作的方法的委托

标准委托

staticvoidMain(string[]args)

{

Listls=newList{"wxd","lzm"};

//System.Actionw=newSystem.Action(wxdPrint);

//ls.ForEach(w);

ls.ForEach(wxdPrint);

}

staticvoidwxdPrint(strings)

{

Console.WriteLine(s);

}

匿名方法

Listls=newList{"wxd","lzm"};

ls.ForEach(delegate(stringname){Console.WriteLine(name);});

Lambda表达式

Listls=newList{"wxd","lzm"};

ls.ForEach(v=>Console.WriteLine(v));

集合扩展方法

Find、FindLast、FindIndex、FindLastIndex、Exists、TrueForAll

publicTFind(Predicatematch)

检索与条件匹配的所有元素,并返回整个List中的第一个匹配元素,其中包含与指定谓词所定义的条件相匹配的所有元素;否则为一个空List

创建复本

FindLast返回索引值publicTFindLast(Predicatematch)

FindIndex返回索引值publicintFindIndex(Predicatematch)

FindLastIndex返回逻辑型publicintFindLastIndex(Predicatematch)

Exists返回逻辑型publicboolExists(Predicatematch)

TrueForAll返回逻辑型,确定是否List中的每个元素都与指定的谓词所定义的条件相匹配publicboolTrueForAll(Predicatematch)

调用委托

System.Predicate

publicdelegateboolPredicate(Tobj);

定义一组条件并确定指定对象是否符合这些条件的方法

标准委托

publicstaticvoidMain()

{

Listls=newList(){1,2,3};

//System.Predicatecw=newPredicate(wxdFind);

//inta=ls.Find(cw);

inta=ls.Find(wxdFind);

}

publicstaticboolwxdFind(intv)

{

boolb=(v>=2);//查找条件

returnb;

}

匿名方法

Listls=newList(){1,2,3};

inta=ls.Find(delegate(intv){boolb=(v<=2);returnb;});

Lambda表达式

Listls=newList(){1,2,3};

inta=ls.Find(v=>v>=2);

FindAll

publicListFindAll(Predicatematch)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2