LINQ技术_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > LINQ技术

LINQ技术

 2010/12/9 9:13:44  kendezhu  http://kendezhu.javaeye.com  我要评论(0)
  • 摘要:LINQtoObjects前面我们在介绍LINQ的时候简单的提了一下LINQtoObjects,现在我们来学习一下LINQtoObjects,主要包括LINQ操作集合,字符串,文件目录。先来看LINQ操作集合LINQ可以操作.NET中的大多数集合,因为大多数集合都实现了IEnumerable<T>接口,并且可以很轻松的对集合的元素进行筛选,排序,分组等。静态数组:publicclasspeople{publicstringname;publicintage;
  • 标签:技术 LINQ技术

LINQ to Objects

?

前面我们在介绍LINQ的时候简单的提了一下LINQ to Objects,现在我们来学习一下LINQ to Objects,主要包括LINQ操作集合,字符串,文件目录。

?

先来看LINQ操作集合

LINQ可以操作.NET中的大多数集合,因为大多数集合都实现了IEnumerable<T>接口,并且可以很轻松的对集合的元素进行筛选,排序,分组等。

静态数组:

?public class people

?? ? ? ?{

?? ? ? ? ? ?public string name;

?? ? ? ? ? ?public int age;

?? ? ? ?}

?? ? ? ?protected void Button1_Click(object sender, EventArgs e)

?? ? ? ?{

?? ? ? ? ? ?people[] person = new people[3];

?? ? ? ? ? ?for (int i = 0; i <person.Length; i++)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?people peo = new people();

?? ? ? ? ? ? ? ?peo.name = "peo" + i.ToString();

?? ? ? ? ? ? ? ?peo.age = i;

?? ? ? ? ? ? ? ?person[i] = peo;

?? ? ? ? ? ?}

?? ? ? ? ? ?var result = from u in person where u.age!=0 orderby u.age descending select u;

?? ? ? ? ? ?foreach (var item in result)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?Label1.Text += item.name;

?? ? ? ? ? ?}

?? ? ? ?}

动态数组:

?protected void Button2_Click(object sender, EventArgs e)

?? ? ? ?{

?? ? ? ? ? ?ArrayList arraylist = new ArrayList();

?? ? ? ? ? ?for (int i = 0; i < 4; i++)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?people peo = new people();

?? ? ? ? ? ? ? ?peo.name = "peo" + i.ToString();

?? ? ? ? ? ? ? ?peo.age = i;

?? ? ? ? ? ? ? ?arraylist.Add(peo);

?? ? ? ? ? ?} ?操作ArrayList等非继承自泛型IEenumerable类型时要给指明范围变量u的类型,这在LINQ第一讲时已经提到过了

?? ? ? ? ? ?var result=from people u in arraylist where u.age!=0 orderby u.age descending select u;

?? ? ? ? ? ?foreach (var item in result)

?? ? ? ? ? ? {

?? ? ? ? ? ? ? ?Label2.Text += item.name;

?? ? ? ? ? ? }

?? ? ? ? ?}

泛型列表List<T>:

泛型排序列表SortedList<TKey,TValue>:

泛型排序列表是由"键/值"对组成的集合,其内集合按照键值进行排序。每一个元素是KeyValuePair<Tkey,TValue>对象。键不能修改不能为空,值必须唯一可以为空。使用比较器来实现排序和比较操作。

?? protected void Button3_Click(object sender, EventArgs e)

?? ? ? ?{

?? ? ? ? ? ?SortedList<string, people> sortedlist = new SortedList<string, people>();

?? ? ? ? ? ?for (int i = 0; i < 4; i++)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?people peo = new people();

?? ? ? ? ? ? ? ?peo.name = "peo" + i.ToString();

?? ? ? ? ? ? ? ?peo.age = i;

?? ? ? ? ? ? ? ?sortedlist.Add(i.ToString(), peo);

?? ? ? ? ? ?}

?? ? ? ? ? ?var result = from u in sortedlist where u.Value.age != 0 select u.Value; ??

?? ? ? ? ? ? ?u的类型是KeyValuePair<string, people>

?? ? ? ? ? ?foreach (var item in result)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?Label3.Text+=item.name;

?? ? ? ? ? ?}

?? ? ? ?}

泛型双向链表LinkedList<T>:

泛型双向链表表示双向链表,它通过当前元素可以直接访问该元素的前一个元素(如果存在)和后一个元素(如果存在)。元素类型是LinkedListNode<T>。如果LinkedList<T>为空,则其First和Last属性的值也为空。

?protected void Button4_Click(object sender, EventArgs e)

?? ? ? ?{

?? ? ? ? ? ?LinkedList<int> linkedlist = new LinkedList<int>();

?? ? ? ? ? ?linkedlist.AddFirst(0); ? ? ? ? ? 在开头处添加指定值的新元素

?? ? ? ? ? ?for (int i = 1; i < 5; i++)

?? ? ? ? ? ?{ ?Find()方法是找到第一个值是指定值的元素

?? ? ? ? ? ? ? ?AddAfter(0方法是在指定元素后面添加一个指定值的新元素

?? ? ? ? ? ? ? ?linkedlist.AddAfter(linkedlist.Find(i - 1), i);

?? ? ? ? ? ?}

?? ? ? ? ? ?var result = from u in linkedlist select u;

?? ? ? ? ? ?foreach (var item in result)

?? ? ? ? ? ?{

?? ? ? ? ? ? ? ?Label4.Text += item;

?? ? ? ? ? ?}

?? ? ? ?}

发表评论
用户名: 匿名